给定字符串文字类型:
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
}
答案 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
。