gpt4 book ai didi

typescript :类实现接口(interface)问题?

转载 作者:搜寻专家 更新时间:2023-10-30 21:38:35 24 4
gpt4 key购买 nike

在 Typescript 2.5.2 中,以下内容不起作用:

interface I {
m?():void;
}

class C implements I {
}

let c = new C();
c.m(); <== Error : TS2339:Property 'm' does not exist on type 'C'.

为什么找不到m 方法?

如果我添加:

interface C extends I {}

没关系!或者如果我添加:

let c = new C() as C & I;

没关系。

据我所知,implements 应该将 CI 类型组合为 C 和 I。这是一个问题吗?

最佳答案

您拥有的接口(interface)是一种弱类型,不会对实现者强制执行属性 m

TypeScript 足够聪明,可以看到 m 绝对不在您的类中,但是您可以通过要求 TypeScript 将变量视为接口(interface)来防止错误:

let c: I = new C();
c.m();

尽管使用了这个技巧,您仍然会遇到运行时问题,TypeScript 试图警告您。

关于 typescript :类实现接口(interface)问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46476303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com