gpt4 book ai didi

javascript - 如何确保 typescript 模块符合接口(interface)

转载 作者:行者123 更新时间:2023-11-28 05:19:15 25 4
gpt4 key购买 nike

我正在为某些域编写特定内容抓取器。因此,对于那些支持的域,我只声明了一些函数,假设有一个

export function getContent(html: string): string {}

所以,我有很多文件都具有这个确切的接口(interface),例如......

export interface Domain {
supportsHttps: boolean;
getContent(html: string): string;
}

然后为了简单起见(制作受支持的主机名和我的域文件的映射),我只是

// domainsList.ts
import * as domainA from './domains/domainA';

export default {
"www.domainA.com": domainA,
}

然后我导入我的域列表

// index.ts
import * as url from 'url';
import domains from './domainsList';

const maybeDomain: Domain | undefined = domains[url.parse(someUrl).host];

if (maybeDomain) {
// here I get proper autocompletion ...
const content = maybeDomain.getContent(someHtml);
} else {
throw new Error('domain not supported');
}

但是,例如,如果我将接口(interface)中的函数名称从 getContent 重构为 getContents,实际上所有域文件中都没有任何编译错误。

我想确保 ./domains/domainA.ts 导出的结构符合我的 Domain 接口(interface)。我有办法做到这一点吗?

最佳答案

由于您实际上并未定义具有 Domain 类型的函数,因此编译器不会将它们两个链接在一起,因此不会出现错误。

此外,Domain 接口(interface)比函数更适合

您可以通过定义类而不是函数来获得所有检查。像这样:

class AwesomeDomain implements Domain {
public supportsHttps: boolean;
getConten(html: string): string {
return '';
}
}

您可以找到完整的示例 here .

关于javascript - 如何确保 typescript 模块符合接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40704069/

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