现有的 JavaScript 代码有“记录”,其中 id 是数字,其他属性是字符串。尝试定义这种类型:
type t = {
id: number;
[key:string]: string
}
Run Code Online (Sandbox Code Playgroud)
给出错误 2411 id 类型编号无法分配给字符串
假设我要创建一个接口来描述这种类型的对象:
let myObj= {
"count": 3,
"key1": "foo",
"key2": "bar",
"key3": "baz"
};
Run Code Online (Sandbox Code Playgroud)
这些对象始终具有类型编号的属性计数,其余属性为字符串
如果我使用这样的索引签名定义接口:
interface MyObect {
count: number;
[key: string]: string;
}
Run Code Online (Sandbox Code Playgroud)
我收到了编译器错误:
[ts] Property 'count' of type 'number' is not assignable to string index type 'string'.
Run Code Online (Sandbox Code Playgroud)
所以我必须这样定义它:
interface MyObect {
count: number;
[key: string]: any;
}
Run Code Online (Sandbox Code Playgroud)
但是这个定义并不那么精确。
有没有一种方法可以强制执行额外属性的类型?