我想定义一个带有对象和不同类型的接口,例如
export interface example {
code: string;
category : {
name : string,
reference: string,
sequence : number
};
}
在定义上,没有问题,但在调用like后
ex = {} as example;
ex.category.name ='electric;
这不起作用,并出现以下错误
错误错误:未捕获(promise中):TypeError:无法设置未定义的属性“名称”TypeError:无法设置未定义的属性“名称”
有一些相似的主题,但它们并不完全相关。(如何在类型脚本接口中定义对象或者如何在类型脚本中定义对象变量的类型?)
我很感激你帮助我找到解决办法。
类型断言并不意味着对象一定是您在运行时断言的形状。您可以断言任何对象都是任何类型的,但如果您的运行时类型不匹配,最终它将在运行时失败。
在您的示例中,ex
对象没有类别
属性,因此它将在运行时未定义
,从而导致您的错误。
您也可以在对象中初始化类别
属性:
var ex = {
category: {} // or you can initialize `name` here as well
} as example;
ex.category.name = 'electric';
在TypeScript类中,可以为属性声明类型,例如:
我定义了这样一个接口: 我这样定义一个变量: 然而,当我尝试设置modal的属性时,它会给我一个消息,说 使用接口来描述模态对象可以吗?如果可以,我应该如何创建它?
这是一个不同于TypeScript中对象字面量中的类型定义的问题 我有一个接口,接受任何对象作为其属性之一: 虽然属性可以是任何东西,但有时我想指定某些类型。我不想使用'as'关键字,因为我不想强制它(如果我缺少一个属性,我想看到错误)。 我有一种方法可以做到: 但是有没有办法在不使用类型断言的情况下将选项内联在 对象文本中同时做到这一点?换句话说,我想这样做:
定义一个类型 条件1:变量类型是一个字符串。 条件2:变量值不是 get "typescript": "~5.2.2"