我想要2个不同的构造函数.一个用于ID,一个用于Id,firstname和boolean值.
界面:person.ts
export interface Person {
id: number;
firstname?: string;
good?: boolean;
}
Run Code Online (Sandbox Code Playgroud)
类:Employee.ts
import { Person } from './person';
export class Employee implements Person {
id: number;
constructor(id: number);
constructor(id: number, firstname?: string, public good?: boolean) { }
}
Run Code Online (Sandbox Code Playgroud)
应用程序:
import { Employee } from './employee';
export class AppComponent {
e1 = new Employee(3); // does work
e2 = new Employee(2,'Mr Nice', true); // does not work
}
Run Code Online (Sandbox Code Playgroud)
打字稿信息很明确:"期待1个参数但得到3"我认为当我声明3个参数时它应该自动使用第二个构造函数.
根据规范,实现的签名不包括在公共类型中.您可以编写以下内容以获得两个签名:
export class Employee implements Person {
id: number;
constructor(id: number);
constructor(id: number, firstname?: string, good?: boolean);
constructor(id: number, public firstname?: string, public good?: boolean) { }
}
Run Code Online (Sandbox Code Playgroud)
同样在这种情况下,您实际上不需要具有两个重载.将最后两个参数声明为可选也可以正常工作:
export class Employee implements Person {
id: number;
constructor(id: number, public firstname?: string, public good?: boolean) { }
}
new Employee(10)
new Employee(10, "", true)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
898 次 |
| 最近记录: |