如何在Typescript中创建耦合类型

rsaldnfx  于 2023-05-19  发布在  TypeScript
关注(0)|答案(2)|浏览(183)

我有四种类型,比方说A和B,X和Y。在我的例子中,A和X只一起使用,B和Y只一起使用。我怎样才能实现一个类型/接口,让我这样写:

value: MyInterface = {a: A, x: X},
value: MyInterface = {a: B, x: Y},

但不是这个

value: MyInterface = {a: A, x: Y},
value: MyInterface = {a: B, x: X},
sy5wg1nm

sy5wg1nm1#

您可以为此使用联合类型

type A = string
type X = string[]

type B = number
type Y = number[]

type MyInterface = { a: A, x: X } | { a: B, x: Y }

const test1: MyInterface = { a: 'foo', x: ['bar', 'foobar'] } // pass
const test2: MyInterface = { a: 0, x: [1, 2] } // pass
const test3: MyInterface = { a: 0, x: ['', ''] } // error
const test4: MyInterface = { a: '', x: [1, 2] } // error

Playground

pvabu6sv

pvabu6sv2#

类型将允许MyInterfaceMyType)成为Union类型。

type AX = {
  a: A;
  x: X;
};
type BY = {
  b: B;
  y: Y;
};

type MyType = AX | BY;

const value: MyType = {
  a: "a",
  x: "x",
};

相关问题