繁体   English   中英

函数参数和Typescript中的类型

[英]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关键字表示IFirstISecond必须与{}兼容。

因此,基本上,此函数接受两个可以强制转换为{}参数,并确保返回类型具有第一个和第二个对象的属性。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM