我可以做这个:
var a: number = 99;
但是如何定义它在对象内部的时间:
var ob = { a: 99 }
要么
class AClass {
ob = { a: 99 };
constructor() {
}
}
是使用接口执行此操作的唯一方法吗?
解决方法:
不需要接口.如果只想定义对象的“形状”,而没有显式的类/接口声明,则可以这样进行:
var ob:{a:number} = {a:99};
在您的课程示例中,它看起来像这样:
class AClass {
ob: { a:number } = { a: 99 };
constructor() {
// tsc knows that this.ob.a is of type number
}
}
这也适用于复杂的对象:
var ob: {
a:number;
b: {
stringVal:string;
numero:number;
bitflag:Boolean
}
} = {
a: 99,
b: {
stringVal: "Some string value here",
numero:1234,
bitflag:true
}
};
此语法在函数声明中非常有用,在函数声明中,您知道期望的对象具有特定的属性:
function(someObject: {stringVal:string; numero:number})
// TypeScript now knows that someObject will have a "stringVal" string property, and a "numero" number property
}
话虽如此,我鼓励您仔细考虑一下接口是否更适合.如果这是一个简单的对象形状,并且不会重复出现,请声明内嵌形状(如上所述)可能很好,但是如果您要在其他地方使用具有相同形状的对象,则可以将其声明为接口可能很有意义,那么您可以重新使用该接口.如果您正在使用一个复杂的对象,它要深入很多层次,那么这是双重事实.尝试全部内联都可能很难看.
原文地址:https://codeday.me/bug/20191121/2051050.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。