重新声明字符串文字类型

时间:2016-12-06 12:54:08

标签: typescript

给定字符串文字类型:

type Easing = "ease-in" | "ease-out" | "ease-in-out";

声明后,我可以在该类型中添加更多文字吗?即。没有触及上面的声明(因为它可能在我不拥有的文件中)。

https://www.typescriptlang.org/docs/handbook/advanced-types.html

不能工作的事情:

type Easing = "ease-in" | "ease-out" | "ease-in-out";
type Easing = Easing | 'uneasy'

type Easing = "ease-in" | "ease-out" | "ease-in-out";
type Easing |= 'uneasy'

type Easing = "ease-in" | "ease-out" | "ease-in-out";
type Easing = "ease-in" | "ease-out" | "ease-in-out" | 'uneasy';

所有这些因错误而失败"重复的标识符' Easing'。"

如果不允许,为什么不呢?为什么它允许用枚举做类似的事情?我不知道他们有什么不同。

enum Easing {
  EaseIn,
  EaseOut,
  EaseInOut
}

// works just fine
enum Easing {
  Uneasy = 3
}

1 个答案:

答案 0 :(得分:0)

如果您可以这样做会产生问题,请考虑以下事项:

type Easing = "ease-in" | "ease-out" | "ease-in-out";
function addClassName(el: HTMLElement, a: Easing) {
    el.className += " " + a;
}

所以这是一个不同文件的一部分,并且曾写过的人只希望处理由Easing定义的3个特定值。
通过更改它可能会破坏该代码。

您可以在文件中执行以下操作:

type Easing2 = Easing | "uneasy";

然后使用它代替Easing