我用npx create-next-app --example with-typescript with-typescript-app
(https://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?
相同的代码在没有构造函数的情况下也可以正常工作
答案 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 线程。 谢谢