Typescript TS接口静态名称和[键:字符串]
或 我的IDE将抛出此错误消息 “number”类型的属性“sub”不可分配给字符串索引类型“{arr:number[];}”。ts(2411) 如何将静态属性名称和动态属性一起使用 已添加 我已经使用了Typescript TS接口静态名称和[键:字符串],typescript,Typescript,或 我的IDE将抛出此错误消息 “number”类型的属性“sub”不可分配给字符串索引类型“{arr:number[];}”。ts(2411) 如何将静态属性名称和动态属性一起使用 已添加 我已经使用了|,但仍然存在来自另一个代码的错误 data = { sub: 1, RANDOM1: [3], DYNAMIC1: [9,0,0] } { data[key].map((num:number,index:number)=>…)//key不能是'sub'。key始终是'Array
|
,但仍然存在来自另一个代码的错误
data = {
sub: 1,
RANDOM1: [3],
DYNAMIC1: [9,0,0]
}
{
data[key].map((num:number,index:number)=>…)//key不能是'sub'。key始终是'Array'类型`
}
上面的代码抛出此错误消息
类型“number | number[]”上不存在属性“map”。类型“number”上不存在属性“map”。ts(2339)
您正在定义一个索引签名,它强制所有属性的返回类型与索引签名返回类型匹配。但是,您可以使用union运算符来修复它,例如
{
data[key].map((num:number, index:number)=> ...) // key can not be `sub`. key always be the type `Array<number>`
}
我试图添加
|
,但无法使用它。我将补充我的问题。@zynkn这是另一个错误。您不能在号码上调用.map()
。您必须键入检查您的数据[键]
例如,使用hasOwnProperty(“map”)
是的,我知道我不能在键入号码时调用map()。我想我需要编辑一下我的代码。
data = {
sub: 1,
RANDOM1: [3],
DYNAMIC1: [9,0,0]
}
{
data[key].map((num:number, index:number)=> ...) // key can not be `sub`. key always be the type `Array<number>`
}
interface P {
data: {
[key: string]: number | Array<number>;
};
}
interface P{
data: {
sub: number
[key: string]: Array<number> | number
}
}