【问题标题】:Typescript: how to correctly declare type alias in globals.d.tsTypescript:如何在 globals.d.ts 中正确声明类型别名
【发布时间】: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


【解决方案1】:

上述声明不正确。正确声明类型别名:

declare type Promise<T> = protractor.promise.Promise<T>;

这将允许

Promise<string>

在导入 globals.d.ts 后在整个应用程序中使用。

泛型信息可以找到:https://www.typescriptlang.org/docs/handbook/generics.html

【讨论】:

    猜你喜欢
    • 2020-10-07
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    相关资源
    最近更新 更多