type MyStructure = Object[] | Object;
const myStructure: MyStructure = [{ foo: "bar" }];
myStructure.map(); // Property 'map' does not exist on type 'MyStructure'. any
Run Code Online (Sandbox Code Playgroud)
库提供此对象的对象或数组.我怎么输入这个?
编辑
我如何访问属性myStructure["foo"]
,如果myStructure
是一个对象?
Fen*_*ton 10
因为你的类型意味着你可以有一个对象,或者你可以有一个数组; TypeScript无法确定哪些成员是合适的.
要对此进行测试,请更改您的类型,您将看到该map
方法现在可用:
type MyStructure = Object[];
Run Code Online (Sandbox Code Playgroud)
在您的情况下,实际的解决方案是在尝试使用该map
方法之前使用类型保护来检查您是否有数组.
if (myStructure instanceof Array) {
myStructure.map((val, idx, []) => { });
}
Run Code Online (Sandbox Code Playgroud)
您也可以使用稍微不同的定义来解决您的问题MyStructure
,例如:
type MyStructure = any[] | any;
Run Code Online (Sandbox Code Playgroud)
或者更窄:
class Test {
foo: string;
}
type MyStructure = Test[] | Test;
Run Code Online (Sandbox Code Playgroud)