初始化时具有null属性的TypeScript类

时间:2019-03-29 16:15:14

标签: typescript

我用npx create-next-app --example with-typescript with-typescript-apphttps://github.com/zeit/next.js/tree/master/examples/with-typescript)的打字稿开始了一个新的Next.js项目。

但是,当我尝试创建这样的类时:

export class Programm {
    id: string;
    name: string;
    thumbnailUrl: string;
}

我收到语法错误:

Property 'id' has no initializer and is not definitely assigned in the constructor.ts(2564)

当我添加这样的构造函数时:

constructor(id: string, name: string, thumbnailUrl: string) {
    this.id = id;
    this.name = name;
    this.thumbnailUrl = thumbnailUrl;
}

有效。为什么会这样,如何创建一个对象,以便在初始化类时属性为null?

相同的代码在没有构造函数的情况下也可以正常工作

2 个答案:

答案 0 :(得分:1)

您可以使用?修饰符将属性定义为可选属性:

export class Programm {
     id?: string;
     name?: string;
     thumbnailUrl?: string;
}

现在,如果您初始化类型为“ Programm”的新实例,则属性将具有undefined值。

答案 1 :(得分:0)

我认为您可以按照以下步骤操作 -> 然后关注@Mr.Jurica Smircic 解决方案 -> 定义初始值

constructor(id: string, name: string, thumbnailUrl: string) {
    this.id = id || '' ;
    this.name = name || '';
    this.thumbnailUrl = thumbnailUrl || '';
}

堆栈中有很多关于为什么不应该使用 null 或 undefined 的讨论。 他们总是鼓励通过构造函数或在对象初始化期间定义初始值。例如空对象。为了更好地理解,您可以查看这些 Q&A 线程。 谢谢