Shift
介绍
Implement the type version of Array.shift
ts
type Result = Shift<[3, 2, 1]> // [2, 1]
View on GitHubts
type Result = Shift<[3, 2, 1]> // [2, 1]
起点
ts
/* _____________ Your Code Here _____________ */typeShift <T > = any/* _____________ Test Cases _____________ */typecases = [Unused '@ts-expect-error' directive.2578Unused '@ts-expect-error' directive.// @ts-expect-error Shift <unknown>,Type 'false' does not satisfy the constraint 'true'.2344Type 'false' does not satisfy the constraint 'true'.Expect <Equal <Shift <[]>, []>>,Type 'false' does not satisfy the constraint 'true'.2344Type 'false' does not satisfy the constraint 'true'.Expect <Equal <Shift <[1]>, []>>,Type 'false' does not satisfy the constraint 'true'.2344Type 'false' does not satisfy the constraint 'true'.Expect <Equal <Shift <[3, 2, 1]>, [2, 1]>>,Type 'false' does not satisfy the constraint 'true'.2344Type 'false' does not satisfy the constraint 'true'.Expect <Equal <Shift <['a', 'b', 'c', 'd']>, ['b', 'c', 'd']>>,]
take the challengets
/* _____________ Your Code Here _____________ */typeShift <T > = any/* _____________ Test Cases _____________ */typecases = [Unused '@ts-expect-error' directive.2578Unused '@ts-expect-error' directive.// @ts-expect-error Shift <unknown>,Type 'false' does not satisfy the constraint 'true'.2344Type 'false' does not satisfy the constraint 'true'.Expect <Equal <Shift <[]>, []>>,Type 'false' does not satisfy the constraint 'true'.2344Type 'false' does not satisfy the constraint 'true'.Expect <Equal <Shift <[1]>, []>>,Type 'false' does not satisfy the constraint 'true'.2344Type 'false' does not satisfy the constraint 'true'.Expect <Equal <Shift <[3, 2, 1]>, [2, 1]>>,Type 'false' does not satisfy the constraint 'true'.2344Type 'false' does not satisfy the constraint 'true'.Expect <Equal <Shift <['a', 'b', 'c', 'd']>, ['b', 'c', 'd']>>,]
解决方案
Spoiler warning // Click to reveal answer
ts
typeShift <T extends any[]> =T extends [inferF , ...inferR ] ?R : [];
ts
typeShift <T extends any[]> =T extends [inferF , ...inferR ] ?R : [];