首页 > 其他分享 >Typescripe类型体操 - FlipArguments

Typescripe类型体操 - FlipArguments

时间:2022-09-24 20:25:02浏览次数:66  
标签:... FlipArguments FlipArray Typescripe 体操 类型 type infer

题目

中文

实现 lodash 中_.flip方法的类型版本

FlipArguments<T>类型接收泛型参数 T 并返回一个函数类型, 且此函数类型有和 T 相同的返回类型但其参数的顺序是倒过来的

English

Implement the type version of lodash's _.flip.

Type FlipArguments<T> requires function type T and returns a new function type which has the same return type of T but reversed parameters.

For example:

type Flipped = FlipArguments<
    (arg0: string, arg1: number, arg2: boolean) => void
>;
// (arg0: boolean, arg1: number, arg2: string) => void

答案

type FlipArray<T extends any[]> = T extends [...infer L, infer R]
    ? [R, ...FlipArray<L>]
    : T;
type FlipArguments<T extends Function> = T extends (
    ...a: infer R
) => infer TReturn
    ? (...a: FlipArray<R>) => TReturn
    : never;

在线演示

标签:...,FlipArguments,FlipArray,Typescripe,体操,类型,type,infer
From: https://www.cnblogs.com/laggage/p/type-challenge-flip-arguments.html

相关文章

  • Typescript类型体操 - Reverse
    题目中文实现类型版本的数组反转Array.reverse例如:typea=Reverse<['a','b']>;//['b','a']typeb=Reverse<['a','b','c']>;//['c','b','a']English......
  • Typescript类型体操 - TupleToNestedObject
    题目中文给定一个只包含字符串类型的元组类型T和一个类型U,递归地构建一个对象.EnglishGivenatupletypeTthatonlycontainsstringtype,andatypeU,build......
  • Typescript类型体操 - ObjectEntries
    题目中文实现Object.entries的类型版本示例:interfaceModel{name:string;age:number;locations:string[]|null;}typemodelEntries=Objec......
  • Typescript类型体操 - Mutable
    题目中文实现一个通用的类型Mutable<T>,使类型T的全部属性可变(非只读)。例如:interfaceTodo{readonlytitle:string;readonlydescription:string;......
  • Typescript类型体操 - PartialRequired
    题目中文实现一个通用的RequiredByKeys<T,K>,它接收两个类型参数T和K。K指定应设为必选的T的属性集。当没有提供K时,它就和普通的Required<T>一样使所有的属性成为必选的......
  • Typescript类型体操 - EndsWith
    题目中文实现EndsWith<T,U>,接收两个string类型参数,然后判断T是否以U结尾,根据结果返回true或false例如:typea=EndsWith<'abc','bc'>;//expectedtobefals......
  • Typescript类型体操 - StartsWith
    题目中文实现StartsWith<T,U>,接收两个string类型参数,然后判断T是否以U开头,根据结果返回true或false例如:typea=StartsWith<'abc','ac'>;//expectedtobe......
  • Typescript类型体操 - RemoveIndexSignature
    题目中文实现RemoveIndexSignature<T>,将索引字段从对象中排除掉.示例:typeFoo={[key:string]:any;foo():void;};typeA=RemoveIndexSignature<......
  • Typescript类型体操 - PickByType
    题目中文找出T中类型为U的属性示例:typeOnlyBoolean=PickByType<{name:string;count:number;isReadonly:boolean;isE......
  • Typescript类型体操 - MinusOne
    题目中文给定一个正整数作为类型的参数,要求返回的类型是该数字减1。例如:typeZero=MinusOne<1>;//0typeFiftyFour=MinusOne<55>;//54EnglishGivenanu......