带你读《现代TypeScript高级教程》八、高级类型(2)https://developer.aliyun.com/article/1348532?groupCode=tech_library
3.模板字面量类型(Template Literal Types)
模板字面量类型(Template Literal Types)是 TypeScript 4.1 引入的新特性,它允许我们在类型级别上操作字符串字面量类型。通过使用模板字面量类型,我们可以创建基于字符串模板的复杂类型。
下面是一个使用模板字面量类型的示例:
type Greeting = `Hello, ${T}!`; type GreetingWorld = Greeting<'World'>; // GreetingWorld的类型为"Hello, World!"
在上面的示例中,我们定义了一个模板字面量类型Greeting,它接受一个字符串类型参数T,并使用字符串模板将其包装在Hello,和!之间。通过使用Greeting<'World'>,我们可以将字符串字面量类型'World'传递给模板字面量类型,从而创建一个具体的类型GreetingWorld,它的类型被推断为"Hello, World!"。
模板字面量类型还支持模板字符串的拼接、条件语句、循环等操作,使得我们可以在类型级别上创建更加动态和复杂的类型。
type Pluralize = `${T}s`;type Message = T extends true ? 'Enabled' : 'Disabled'; type Plural = Pluralize<'apple'>; // Plural的类型为"apples"type EnabledMessage = Message; // EnabledMessage的类型为'Enabled'
在上面的示例中,我们定义了两个模板字面量类型,Pluralize用于将字符串类型T转换为其复数形式,Message用于根据布尔类型参数T返回不同的消息。