# 2688-实现StartWith

# 题目描述

实现StartsWith<T, U>,接收两个 string 类型参数,然后判断T是否以U开头,根据结果返回truefalse

例如:

type a = StartsWith<'abc', 'ac'>; // expected to be false
type b = StartsWith<'abc', 'ab'>; // expected to be true
type c = StartsWith<'abc', 'abcd'>; // expected to be false

# 分析

判断是否以某个字符开头,其实之前有类似的用法,实现 Replace 中,有 A extends `${From}${infer M}` 的用法,在这一用法中,From 就是个常量字符,举几个例子:

// Case1 = true
type Case1 = '123' extends `1${infer M}` ? true : false;

// Case2 = false
type Case2 = '123' extends `${infer M}2` ? true : false;

这种常量就是一个占位(可以不止一个字符),而 infer M 则承接剩余的字符,可以为空字符。所以本题的解法其实非常简单

# 题解

type StartsWith<T extends string, U extends string> = T extends `${U}${infer R}`
  ? true
  : false;

# 知识点

  1. 字符串匹配常量,A extends `111${infer M}`
Last Updated: 2023/5/16 06:00:28