我正在努力理解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中使用它?