Typescript具有两种兼容性:子类型和赋值(根据the documentation)。
在测试此代码时[playground link]:
type A<K, T extends K> = { key: T };
type a1 = A<any, number>;
type a2 = A<number, any>; // a2 = {key:any}
type B<K, T> = T extends K ? 1 : 2;
type b1 = B<any, number>;
type b2 = B<number, any>;
很明显,a1
是{key:number}
。
但是为什么a2
有效并且等于{key:any}
?如果这个问题没有引起混淆,那么等于b2
的{{1}}就有意义。
答案 0 :(得分:0)
在打字稿中,一切与any
匹配,never
除外