之前未考虑到 tween 的某些函数其实是可以读取到 target 的:
tween.to({ b: 0 });
那第一种情况确实其实应该报错,但注意第二种情况也应该要报错,因为现在 tween 对 target 既能读也能写。
let t1: Tween<Animal> = tween(animal);
let t2: Tween<Dog> = tween(dog);
t2 = t1; // Type 'Animal' is not assignable to type 'Dog'.ts(2322)
t1 = t2; // should error there.
t1.target(animal); // because animal no 'b' property.