向typescript中的javascript对象添加属性时没有错误

向typescript中的javascript对象添加属性时没有错误,javascript,typescript,Javascript,Typescript,我发现这篇文章非常有趣,但当我尝试扩展像window这样的全局变量时,它并没有帮助我 测试.ts window.test = {}; //ERROR: Property 'test' does not exist on type 'Window'. (function (test) { //do stuff } (window.test)); //Build: Property 'test' does not exist on type 'Window' 错误消息: 错误:类型“Window

我发现这篇文章非常有趣,但当我尝试扩展像
window
这样的全局变量时,它并没有帮助我

测试.ts

window.test = {}; //ERROR: Property 'test' does not exist on type 'Window'.

(function (test)
{
//do stuff
} (window.test)); //Build: Property 'test' does not exist on type 'Window'
错误消息:

错误:类型“Window”上不存在属性“test”

我如何解决这个问题?

它被称为:

()


正如您所见,您需要在
窗口
接口中声明新方法,这样当您添加实际实现时,编译器就不会抱怨了。

是不是JS中有类似于
接口的东西,还是只是在typescript中?@MahmoudZakal
接口
是typescript的东西:,由于现在javascriptAs中不需要这样做,如果您使用TS编译器使用
checkJs
选项进行类型检查,那么在JS中就需要这样做。在这种情况下,编译器会抱怨
window.test=…
,但是
window[“test”]=…
@Coderer也可以,即使您将
test
添加到窗口接口中?也许我误解了,但在普通Javascript中没有接口。马哈茂德的问题是如何告诉编译器在Javascript中的
窗口上应该有
.test
属性;这就是我的评论。
interface Window {
    test(): void;
}

window.test = function() {
    // do what ever
}