Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Typescript索引签名的不同类型_Javascript_Typescript - Fatal编程技术网

Javascript Typescript索引签名的不同类型

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

我有以下界面

当我尝试将多个类型/接口分配给密钥签名时,会出现此错误。我知道我可以使用[key:string]:任何。但是,我不想一概而论。有没有什么可行的方法可以让这一切顺利进行


如果要动态访问详细信息的属性,最好使用:

然后你可以做:

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
}