Typescript接口未捕获TypeError:无法设置属性

时间:2019-02-10 20:46:41

标签: javascript typescript types

我正在尝试向对象添加类型断言,在为嵌套对象分配值时遇到TypeError。

这是代码段

val stringToFormat = "2019-02-10T19:30:00+00:00"
val formattedString = stringToFormat.substring(11,16)

打字稿游乐场Link

的链接

3 个答案:

答案 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实际上并未初始化研究属性。