我有一个名为Greeter的自定义类。它有一个名为fromJson的方法,该方法接受一个对象作为参数,并将该对象的所有属性分配给该类。我使用一个名为GreeterInterface的接口对类和对象参数进行类型检查。
interface GreeterInterface {
greeting: string;
name: string;
lastname: string;
age: number;
}
class Greeter implements GreeterInterface{
constructor(message: string) {
this.greeting = message;
}
fromJson(obj: object) {
Object.assign(this, obj)
return this;
}
greet() {
return "Hello, " + this.greeting;
}
}
let param: GreeterInterface = {
greeting: 'hello',
lastname: 'hina',
name: 'love',
age:1
}
let greeter = new Greeter('hola').fromJson(param);
let button = document.createElement('button');
button.textContent = "Say: ";
button.onclick = function() {
console.log(greeter)
}
document.body.appendChild(button);这不能编译。上面说Greeter没有属性打招呼。
发布于 2019-03-13 08:01:40
找到了解决方案。我把构造函数改成了constructor(obj: GreeterInterface),而不是fromJson,因为在路易斯解决方案中,TypeScript抱怨“没有初始化器,也没有明确地在构造函数中赋值”。
interface GreeterInterface {
greeting: string;
name: string;
lastname: string;
age: number;
}
class Greeter implements GreeterInterface{
age: number;
greeting: string;
lastname: string;
name: string;
constructor(obj: GreeterInterface) {
this.lastname = obj.lastname;
this.greeting = obj.greeting;
this.name = obj.name;
this.age = obj.age;
}
greet() {
return "Hello, " + this.greeting;
}
}
let param: GreeterInterface = {
greeting: 'hello',
lastname: 'hina',
name: 'love',
age:1
}
let greeter = new Greeter(param);
let button = document.createElement('button');
button.textContent = "Say: ";
button.onclick = function() {
console.log(greeter)
}
document.body.appendChild(button)https://stackoverflow.com/questions/55132186
复制相似问题