首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从接口调用函数?

如何从接口调用函数?
EN

Stack Overflow用户
提问于 2018-08-17 00:53:46
回答 1查看 1.9K关注 0票数 0

我有一个角5应用程序,我希望有一个接口来定义这样的函数:

代码语言:javascript
复制
interface PersonInfo {
    getName(): string;
}

我想要另一个接口,它将有一个函数,它的函数之一返回上述的类型:

代码语言:javascript
复制
interface Parser{
    getPersonInfo(document: string): PersonInfo;
}

然后,我想在我的主要组件中以某种方式使用它,如以下所示。

代码语言:javascript
复制
@Component({
    selector: 'page-home',
    templateUrl: 'home.html'
})
export class HomePage implements PersonInfo, Parser {

    constructor() {
        const pi: PersonInfo = this.getPersonInfo('test');
        console.log(pi.getName());
    }
    public getName(): string{
        return 'getname';
    }
    public getPersonInfo(document: string): PersonInfo{
        const pi: PersonInfo  = {
            getName(){
                return 'getPersonInfo - getName()';
            }
        };

        return pi;
    }
}

问题是,在console.log(ci.getName());中,我的站点给了我一个TypeError: ci.getName is not a function错误。

我不知道如何让getPersonInfo设置名字..。然后getName()返回那个名字..。然后在构造函数(或其他函数)中调用这些函数并获取名称。有什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-17 08:25:01

我看到的第一个问题是,您向TSC断言创建的"pi“对象符合"PersonInfo",但它缺少"getName()”属性。

试试这个:

代码语言:javascript
复制
public getPersonInfo(document: string): PersonInfo {
    const pi: PersonInfo = {
        getName() {
            return 's';
        }
    };

    return pi;
}

在可能的情况下,避免使用"foo as Bar“语法,这似乎是一种覆盖,允许开发人员将值投给编译器无法保证有效的类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51887074

复制
相关文章

相似问题

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