第一个
in
被调用
mapped types
另一个是
index signature
。
不同的是,您不能使用
index signature
具有泛型或文字类型。
type Case1<T extends string> = {
[key: T]: string; // An index signature parameter type cannot be a literal type or generic type. Consider using a mapped object type instead.ts(1337)
};
type Case2 = {
[key: 'a' | 'b']: string; // An index signature parameter type cannot be a literal type or generic type. Consider using a mapped object type instead.ts(1337)
};
然而,它在
mapped types
:
type Case1<T extends string> = {
[key in T]: string; // no error
};
type Case2 = {
[key in 'a' | 'b']: string; // no error
};
```