• 泛型只影响​​使用​​​ 的部分, 不会影响​​声明​​ 的部分


不管三七二十一先来看代码即可:

TypeScript-泛型兼容性_泛型

interface TestInterface<T> {
age: T;
}

// age:number
let t1: TestInterface<number>;

// age:string
let t2: TestInterface<string>;
t1 = t2;
t2 = t1;

在如上代码当中定义了两个 ​​TestInterface​​​ 接口类型的变量,但是在使用定义的 ​​t1​​​、​​t2​​​ 报错了,这就是如上所说的只影响使用的部分,然后去了接口当中的 ​​age​​ 限定条件就是只剩下接口的声明了,那么就不会报错了,因为我如上说了不会影响声明部分。

TypeScript-泛型兼容性_泛型_02

interface TestInterface<T> {
}

let t1: TestInterface<number>;

let t2: TestInterface<string>;
t1 = t2;
t2 = t1;