[英]Function parameters and type in Typescript
在此函数的声明中,如果删除<IFirst extends {}, ISecond extends {}>
,则编译器将报告错误; <IFirst extends {}, ISecond extends {}>
,编译器将报告错误。 返回值不是双点之后的类型吗? 函数名后面的<IFirst extends {}, ISecond extends {}>
是什么意思? 为什么我必须在声明中同时使用<IFirst extends {}, ISecond extends {}>
和: IFirst & ISecond
? 我检查了文档并浏览了Internet,但是找不到答案。
function extend<IFirst extends {}, ISecond extends {}>(
IFirst: IFirst,
ISecond: ISecond
): IFirst & ISecond {}
&
是交叉点类型 ,它是TypeScript中的高级类型之一。
它将把IFirst和ISecond的所有属性组合为一个。
<IFirst extends {}, ISecond extends {}>
是通用类型, extends
关键字表示IFirst
或ISecond
必须与{}
兼容。
因此,基本上,此函数接受两个可以强制转换为{}
参数,并确保返回类型具有第一个和第二个对象的属性。
function extend<TFirst extends {}, TSecond extends {}>(
first: TFirst,
second: TSecond
): TFirst & TSecond {
return Object.assign({}, first, second);
}
const extended = extend({a: 1, b: 2 }, { c: 3, d: 4 });
console.log(extended);
extended
将具有以下定义:
const extended: {
a: number;
b: number;
} & {
c: number;
d: number;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.