我正在尝试向对象添加类型断言,在为嵌套对象分配值时遇到TypeError。
这是代码段
val stringToFormat = "2019-02-10T19:30:00+00:00"
val formattedString = stringToFormat.substring(11,16)
打字稿游乐场Link
的链接答案 0 :(得分:0)
因为接口实际上并不“创建”您的对象。 在您的代码中,开始分配值之前,john只是一个空对象。您可以为其分配属性(年龄,姓名等),因为这很正常。 您试图将一个属性分配给一个不存在的对象属性。使用类并使用构造函数对其进行初始化。或者具有一个可以从该“接口”正确创建对象的函数。
从根本上来说,接口只是打字稿中的奇特事物,可以防止开发人员输入错误。它不会在后台创建任何东西。
答案 1 :(得分:0)
Typescript只会告诉您的IDE此新对象的类型。它不会为您创建完整的对象。
这是您要创建对象的方式:
interface Person {
age: number;
name: string;
study: {
schoolName: string
}
}
let john = {} as Person;
john.age = 25;
john.name = 'John';
john.study = {
schoolName: 'some school'
};
console.log(john);
或者,您可以直接执行以下操作:
let john: Person = {
age: 25;
name: 'John';
study: {
schoolName: 'some school'
}
};
答案 2 :(得分:0)
也许查看您的代码段的compiled version会为您清除
var john = {};
john.age = 25;
john.name = 'John';
john.study.schoolName = 'some school';
console.log(john);
如您所见,Typescript实际上并未初始化研究属性。