【发布时间】:2017-06-12 16:11:25
【问题描述】:
我想在 globals.d.ts 文件中声明一个类型,以便我可以调用速记类型。
declare type Promise<string> = protractor.promise.Promise<string>;
在我的打字稿项目中,以下内容曾经很好。但是,最近这一行一直在产生以下错误:类型参数名称不能是'字符串'。这可能是由 TS 升级引起的。我意识到,如果我将声明的类型更改为 Promise 或没有类型的东西,这可以解决问题,但我想了解为什么会发生此错误。
任何见解都将不胜感激。
【问题讨论】:
-
您是否打算创建一个泛型类型别名?这就是你所拥有的。
-
@AluanHaddad 是的,我使用的是 Typescript 2.0.6
-
我不确定为什么在这种情况下隐藏
string是非法的,但是为类型参数使用不同的名称将解决错误并且更具可读性。但是,创建一个与全局变量(例如Promise)冲突的别名是个坏主意。 -
没错,我意识到更改类型的名称可以解决错误。但是,我想知道为什么会这样。
-
我做了一些挖掘,我相信原因与围绕 pull request 的讨论有关,该讨论引入了对泛型类型别名的支持 github.com/Microsoft/TypeScript/pull/3397
标签: angularjs typescript protractor angular-promise