如何在名称空间中声明与全局对象同名的类型?

时间:2019-03-07 15:18:43

标签: typescript

我想使用foo.Proimse输入一个图书馆,这是一个无尽的承诺。

但是打字稿编译器为此代码抛出错误“类型别名'Promise'循环引用自身”:

declare namespace foo {
    var Promise: PromiseConstructor;
    type Promise<T> = Promise<T>;
}

https://www.typescriptlang.org/play/index.html#src=declare%20namespace%20foo%20%7B%0D%0A%20%20%20%20var%20Promise%3A%20PromiseConstructor%3B%0D%0A%20%20%20%20type%20Promise%3CT%3E%20%3D%20Promise%3CT%3E%3B%0D%0A%7D%0D%0A

我找到了使用别名的解决方法:

type PromiseAlias<T> = Promise<T>;
declare namespace foo {
    var Promise: PromiseConstructor;
    type Promise<T> = PromiseAlias<T>;
}

https://www.typescriptlang.org/play/index.html#src=type%20PromiseCopy%3CT%3E%20%3D%20Promise%3CT%3E%3B%0D%0A%0D%0Adeclare%20namespace%20foo%20%7B%0D%0A%20%20%20%20var%20Promise%3A%20PromiseConstructor%3B%0D%0A%20%20%20%20type%20Promise%3CT%3E%20%3D%20PromiseCopy%3CT%3E%3B%0D%0A%7D%0D%0A

还有其他清洁方法吗?

0 个答案:

没有答案