【发布时间】:2019-03-12 23:31:47
【问题描述】:
我有一个名为 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 没有属性问候语。
【问题讨论】:
-
我同意编译器。必须在 TypeScript 中声明属性,因为它是静态类型的。查看typescriptlang.org/docs/handbook/classes.html 中类的定义,并注意
Greeter类顶部的额外行(声明该类具有指定的greeter属性)。
标签: typescript inheritance interface