• [Typescript] 27. Medium Capitalize


    Implement Capitalize<T> which converts the first letter of a string to uppercase and leave the rest as-is.

    For example

    type capitalized = Capitalize<'hello world'> // expected to be 'Hello world'
    // Non built-in approach
    /* _____________ Your Code Here _____________ */
    interface Map {
        a: 'A'
        b: 'B'
        c: 'C'
        d: 'D'
        e: 'E'
        f: 'F'
        g: 'G'
        h: 'H'
        i: 'I'
        j: 'J'
        k: 'K'
        l: 'L'
        m: 'M'
        n: 'N'
        o: 'O'
        p: 'P'
        q: 'Q'
        r: 'R'
        s: 'S'
        t: 'T'
        u: 'U'
        v: 'V'
        w: 'W'
        x: 'X'
        y: 'Y'
        z: 'Z'
    }
    type MyCapitalize<S extends string> = S extends `${infer First}${infer REST}` ? `${First extends keyof Map ? Map[First] : First}${REST}`: ''
    
    type x = Capitalize<'a'>
    /* _____________ Test Cases _____________ */
    import type { Equal, Expect } from '@type-challenges/utils'
    
    type cases = [
      Expect<Equal<MyCapitalize<'foobar'>, 'Foobar'>>,
      Expect<Equal<MyCapitalize<'FOOBAR'>, 'FOOBAR'>>,
      Expect<Equal<MyCapitalize<'foo bar'>, 'Foo bar'>>,
      Expect<Equal<MyCapitalize<''>, ''>>,
      Expect<Equal<MyCapitalize<'a'>, 'A'>>,
      Expect<Equal<MyCapitalize<'b'>, 'B'>>,
      Expect<Equal<MyCapitalize<'c'>, 'C'>>,
      Expect<Equal<MyCapitalize<'d'>, 'D'>>,
      Expect<Equal<MyCapitalize<'e'>, 'E'>>,
      Expect<Equal<MyCapitalize<'f'>, 'F'>>,
      Expect<Equal<MyCapitalize<'g'>, 'G'>>,
      Expect<Equal<MyCapitalize<'h'>, 'H'>>,
      Expect<Equal<MyCapitalize<'i'>, 'I'>>,
      Expect<Equal<MyCapitalize<'j'>, 'J'>>,
      Expect<Equal<MyCapitalize<'k'>, 'K'>>,
      Expect<Equal<MyCapitalize<'l'>, 'L'>>,
      Expect<Equal<MyCapitalize<'m'>, 'M'>>,
      Expect<Equal<MyCapitalize<'n'>, 'N'>>,
      Expect<Equal<MyCapitalize<'o'>, 'O'>>,
      Expect<Equal<MyCapitalize<'p'>, 'P'>>,
      Expect<Equal<MyCapitalize<'q'>, 'Q'>>,
      Expect<Equal<MyCapitalize<'r'>, 'R'>>,
      Expect<Equal<MyCapitalize<'s'>, 'S'>>,
      Expect<Equal<MyCapitalize<'t'>, 'T'>>,
      Expect<Equal<MyCapitalize<'u'>, 'U'>>,
      Expect<Equal<MyCapitalize<'v'>, 'V'>>,
      Expect<Equal<MyCapitalize<'w'>, 'W'>>,
      Expect<Equal<MyCapitalize<'x'>, 'X'>>,
      Expect<Equal<MyCapitalize<'y'>, 'Y'>>,
      Expect<Equal<MyCapitalize<'z'>, 'Z'>>,
    ]
    // Built-in 
    type MyCapitalize<S extends string> = Capitalize<S>;
  • 相关阅读:
    获取程序的当前启动路径
    SuspendLayout,ResumeLayout,Layout,PerformLayout
    序列化反序列化的简单例子
    简单的异步编程入门例子
    ClickOnce的更新策略
    ubuntu update(国内升级源)
    为AptGet设置代理
    如何启用 Ubuntu 中的 root 帐号
    The Great Tunnel Debate: PBT vs TMPLS
    Traffic engineering for Ethernet: PBT vs. TMPLS
  • 原文地址:https://www.cnblogs.com/Answer1215/p/16686416.html
Copyright © 2020-2023  润新知