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

Jon*_*nas 2 typescript

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

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

export class Programm {
    id: string;
    name: string;
    thumbnailUrl: string;
}
Run Code Online (Sandbox Code Playgroud)

我收到语法错误:

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;
}
Run Code Online (Sandbox Code Playgroud)

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

相同的代码在没有角度的构造函数的情况下工作

jur*_*ure 5

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

export class Programm {
     id?: string;
     name?: string;
     thumbnailUrl?: string;
}
Run Code Online (Sandbox Code Playgroud)

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

  • 或者,您可以将类型为 union with undefined `id: string | 未定义;` (4认同)