gpt4 book ai didi

typescript - 如何扩展字符串文字类型?

转载 作者:搜寻专家 更新时间:2023-10-30 21:16:47 24 4
gpt4 key购买 nike

给定

export type Foo = 'foo' | 'bar;

如何扩展类型 Foo(在另一个模块中)也允许 'x' | 'y' 作为可能的值?

如果我写在其他地方:

export type Foo = 'x' | 'y'

Typescript 提示重复标识符 Foo

最佳答案

您不能覆盖现有的 Foo 类型。这样做的原因是现有代码可能依赖于 Foo 'foo''bar'。在下面的示例中,类型检查器不仅推断出 a 不能是 else block 中的 'foo',它还可以推断出 a 肯定是 'bar' 那里:

type Foo = 'foo' | 'bar';
function test(x: Foo) {
if (x === 'foo') {
// infers x === 'foo'
} else {
// infers x === 'bar'
}
}

但是,您可以创建一个新的类型别名,它接受 Foo 类型的所有值,以及一些其他值:

type Foo = 'foo' | 'bar';
type FooEx = Foo | 'x' | 'y';

var a : FooEx;
a = 'foo'; // ok
a = 'x'; // ok
a = 'z'; // error

关于typescript - 如何扩展字符串文字类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37492418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com