EndsWith
提出詳細
type A = { '0': []; '1': [unknown]; '2': [unknown, unknown]; '3': [unknown, unknown, unknown]; '4': [unknown, unknown, unknown, unknown]; '5': [unknown, unknown, unknown, unknown, unknown]; '6': [unknown, unknown, unknown, unknown, unknown, unknown]; '7': [unknown, unknown, unknown, unknown, unknown, unknown, unknown]; '8': [unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown]; '9': [unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown]; }; type Times10<T extends readonly unknown[]> = [ ...T, ...T, ...T, ...T, ...T, ...T, ...T, ...T, ...T, ...T ] type BuildFromStr<S extends string, D extends unknown[] = []> = S extends `${infer B extends keyof A}${infer C}` ? BuildFromStr<C, [...Times10<D>, ...A[B]]> : D; type MinusOne<T extends number> = BuildFromStr<`${T}`> extends [infer _, ...infer Rest] ? Rest["length"] : never type LastChar<T extends string, A extends unknown[] = []> = T extends `${infer Head}${infer Rest}` ? LastChar<Rest, [Head]> : A[MinusOne<A["length"]>] type EndsWith<T extends string, U extends string> = LastChar<T> extends LastChar<U> ? true : false
提出日時 | 2025-09-15 14:37:22 |
---|---|
問題 | EndsWith |
ユーザー | balckowl |
ステータス | Accepted |
import type { Equal, Expect } from '@type-challenges/utils' type cases = [ Expect<Equal<EndsWith<'abc', 'bc'>, true>>, Expect<Equal<EndsWith<'abc', 'abc'>, true>>, Expect<Equal<EndsWith<'abc', 'd'>, false>>, ]