相关疑难解决方法(0)

TypeScript的并集和交集类型的命名

我无法理解TypeScript中术语联合类型交集类型背后的逻辑.

从务实角度来说,如果不同类型的属性是套房产,如果我与他们结合&操作,产生的类型将成为联盟的那些套.遵循这个逻辑,我希望像这样的类型被称为联合类型.如果我将它们组合在一起|,我只能使用它们的共同属性,即集合的交集.

维基百科似乎支持这种逻辑:

任何给定非空集S的幂集(所有子集的集合)形成布尔代数,集合的代数,具有两个运算∨:=∪(并集)和∧:=∩(交集).

但是,根据typescriptlang.org,它恰恰相反:&用于生成交集类型|用于联合类型.

我确信还有另一种方式来看待它,但我无法弄明白.

boolean-logic set typescript

35
推荐指数
4
解决办法
1430
查看次数

Typescript:理解并集和交集类型

我试图在打字稿中获得关于并集和交集类型的直觉,但我无法弄清楚这种情况:Playground Link

interface A {
    a: number;
}

interface B{
    b: boolean;
}



type UnionCombinedType = A | B;
type IntersectionType = A & B;

const obj: UnionCombinedType = {
    a: 6,
    b: true,
}

const obj2: IntersectionType = {
    a: 6,
    b: true,
}

Run Code Online (Sandbox Code Playgroud)

为什么我允许将两个值都放入交集类型中?两个界面之间的交集是空的。如果我读到&asAND那么我很清楚为什么它允许我添加两个 props,但是我应该读到关键字|asOR并且我希望它允许我只分配ab而不是两者都分配。

有人能给我一些关于这些类型的直觉吗?

union intersection typescript

21
推荐指数
1
解决办法
1万
查看次数

类型的并集和交集

为了练习,我写了这段代码:

type Cat = {name: string, purrs: boolean};
type Dog = {name: string, barks: boolean, bites: boolean};

type CatOrDogOrBoth = Cat | Dog;
type CatAndDog = Cat & Dog;

let pet1 : CatOrDogOrBoth = {name: "pooky", purrs: true, bites: false};
let pet2 : CatAndDog = {name: "Timmy" };
Run Code Online (Sandbox Code Playgroud)

但是pet2TypeScript上的编译器错误说我需要添加到我的对象中。但是这两种类型的交集不是只有name属性吗?purrsCatAndDog

typescript

1
推荐指数
1
解决办法
74
查看次数

标签 统计

typescript ×3

boolean-logic ×1

intersection ×1

set ×1

union ×1