Javascript Typescript索引签名的不同类型
我有以下界面 当我尝试将多个类型/接口分配给密钥签名时,会出现此错误。我知道我可以使用[key:string]:任何。但是,我不想一概而论。有没有什么可行的方法可以让这一切顺利进行Javascript Typescript索引签名的不同类型,javascript,typescript,Javascript,Typescript,我有以下界面 当我尝试将多个类型/接口分配给密钥签名时,会出现此错误。我知道我可以使用[key:string]:任何。但是,我不想一概而论。有没有什么可行的方法可以让这一切顺利进行 如果要动态访问详细信息的属性,最好使用: 然后你可以做: if (isDetails(details[t])) { // details[t].name should be fine with the compiler } 你能给我一个想法吗?详细信息[t].name谢谢你的提示。为什么string | I
如果要动态访问详细信息的属性,最好使用: 然后你可以做:
if (isDetails(details[t])) {
// details[t].name should be fine with the compiler
}
你能给我一个想法吗?详细信息[t].name谢谢你的提示。为什么string | IDetails不起作用?为什么有[key:string]:string | IDetails?没有它,你所尝试的一切都会成功。您是否需要更多属性?@NitzanTomer这是一个简单的用例。t是一个动态的例子。所以,如果我需要访问属性,我需要这样做。
function isDetails(obj: string | IDetails): obj is IDetails {
return Object.keys(obj).length === 2 && typeof obj["name"] === "string" && typeof obj["age"] === "number";
}
if (isDetails(details[t])) {
// details[t].name should be fine with the compiler
}