如何使Partial<T>
可索引?
let entity: Partial<T> = {};
entity[id] = 444;
这是打字稿错误:
在类型
Partial<T>
上找不到带有'string'类型参数的索引签名。
答案 0 :(得分:1)
我认为将id
声明为keyof T
会更好。在可能的情况下,添加索引签名实际上会关闭变量的类型检查
declare let id: string;
let entity: Partial<T> = {};
entity[id as keyof T] = 444;
这里的假设是id
是一个字符串,代表您正在索引的类型的键。您可能应该事先检查id
确实是有效密钥。
type T = {
id: number,
no: number
}
let id: keyof T = Math.random() > 0.5 ? "id" : "no";
let entity: Partial<T> = {};
entity[id] = 444;
如果id
始终是常量,则最好将id
声明为keyof T
:
为完整起见,添加索引签名可以使用交集:
let entity: Partial<T> & Record<string, T[keyof T]> = {};
entity[id] = 444;