如何在TypeScript中本地扩展全局接口



我正在努力理解GitHub的这篇文章,它描述了在本地扩展全局接口。

然而,由于帖子中的评论很少,我很难理解发生了什么。下面是我所指的帖子。

您可以在本地扩展全局接口

declare global {
interface String {
myMegaMethod(): void;
}
}    
'hey'.myMegaMethod(); // works

如果我要使用以下模式来扩展像String这样的本机类型的功能,我将如何做到这一点?

我是否只有一个名为string.ts的文件,其中包含以下代码段,每当我希望我的字符串能够访问myMegaMethod时,我都会导入这些代码段

declare global {
interface String {
myMegaMethod(): void;
}
}

我很难理解发生了什么。

提到的示例代码只是显示了如何使用该方法,而没有谈论完整的implementation及其usage。此外,该代码用于type declaration,也就是d.ts文件,供其他模块使用,这是实现您提到的目标的步骤之一。

实际上,要扩展"string",您甚至可能不需要global declare,只需在新的d.ts文件中使用一个简单的接口即可,您可以在下面的SO链接中参考。

如果我要使用以下模式来扩展像String这样的原生类型,我该怎么做?

首先,只需在.ts文件wont中添加该代码即可。主要使用prototype需要遵循以下步骤来实现这一点

这在下面的SO线程-中有完整的描述

如何扩展字符串原型并在Typescript中使用它?

最新更新