首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在类上实现接口?

如何在类上实现接口?
EN

Stack Overflow用户
提问于 2019-03-13 07:31:47
回答 1查看 28关注 0票数 0

我有一个名为Greeter的自定义类。它有一个名为fromJson的方法,该方法接受一个对象作为参数,并将该对象的所有属性分配给该类。我使用一个名为GreeterInterface的接口对类和对象参数进行类型检查。

代码语言:javascript
复制
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没有属性打招呼。

EN

回答 1

Stack Overflow用户

发布于 2019-03-13 08:01:40

找到了解决方案。我把构造函数改成了constructor(obj: GreeterInterface),而不是fromJson,因为在路易斯解决方案中,TypeScript抱怨“没有初始化器,也没有明确地在构造函数中赋值”。

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55132186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档