我很难&在TypeScript中找到运算符的定义.我最近遇到了以下代码:
type IRecord<T> = T & TypedMap<T>;
Run Code Online (Sandbox Code Playgroud)
该运算符的作用是什么,它与union类型|有何不同?
Sam*_*son 49
这看起来像是语言规范的交叉类型部分.具体来说,&似乎是交叉型文字.至于它的作用:
交点类型表示同时具有多种类型的值.交集类型A和B的值是类型A和类型B的值.交叉类型使用交集类型文字写入(第3.8.7节).
该规范继续提供一个有用的片段,以更好地了解行为:
interface A { a: number }
interface B { b: number }
var ab: A & B = { a: 1, b: 1 };
var a: A = ab; // A & B assignable to A
var b: B = ab; // A & B assignable to B
Run Code Online (Sandbox Code Playgroud)
因为ab是类型A 和类型B,我们可以将其分配给a和/或b.如果ab只是类型B,我们只能分配给它b.
您共享的代码可能来自GitHub上的这条评论,其中提到了交叉类型.
值得注意的是,如果您更喜欢使用接口而不是类型(尽管它们很大程度上相似),那么您通常可以使用接口扩展而不是类型交集,如下所示:
// base type
interface Shape {
color: string;
}
// extension
interface Square extends Shape {
sideLength: number;
}
// intersection
type Square = Shape & {
sideLength: number;
}
Run Code Online (Sandbox Code Playgroud)
另请参阅:TypeScript 中扩展接口和相交接口之间的区别?
| 归档时间: |
|
| 查看次数: |
10189 次 |
| 最近记录: |