首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
开篇:用正确的方式学习 TypeScript
打造 TypeScript 的开发环境
TypeScript中的原始类型与对象类型
TypeScript中的字面量类型与枚举
TypeScript中的函数重载与面向对象
TypeScript的内置类型:any、unknown、never 与类型断言
TypeScript 类型工具
TypeScript 中无处不在的泛型
TypeScript 类型系统层级:从 Top Type 到 Bottom Type
TypeScript 类型里的逻辑运算:条件类型与 infer
TypeScript 中的内置工具类型基础
TypeScript 反方向类型推导:用好上下文相关类型
TypeScript 函数类型:协变与逆变的比较
TypeScript中类型编程与类型体操的意义
TypeScript模板字符串类型
TypeScript模板字符串工具类型进阶
TypeScript类型声明、类型指令与命名空间
在 React 中愉快地使用 TypeScript:内置类型与泛型坑位
让 ESLint 来约束你的 TypeScript 代码:配置与规则集介绍
TypeScript装饰器与反射元数据
TypeScript控制反转与依赖注入
TSConfig 全解(上):构建相关配置
TSConfig 全解(下):检查相关、工程相关配置
当前位置:
首页>>
技术小册>>
TypeScript入门指南
小册名称:TypeScript入门指南
与JavaScript相比,TypeScript具有更严格的类型检查和更好的代码提示。 模板字符串是一种方便的语法,它允许在字符串中嵌入表达式。在JavaScript和TypeScript中,模板字符串由反引号包围,并使用${}语法嵌入表达式。例如,以下代码使用模板字符串将两个数字相加: ```javascript const a = 1; const b = 2; const result = `The sum of ${a} and ${b} is ${a + b}.`; console.log(result); // The sum of 1 and 2 is 3. ``` 在TypeScript中,我们可以使用模板字符串工具类型来进一步增强模板字符串的功能。模板字符串工具类型允许我们根据模板字符串的内容自动推断类型,而不需要手动指定类型。 **1、字面量类型模板字符串** 首先,让我们看一个简单的示例,该示例使用模板字符串工具类型来创建字面量类型模板字符串。字面量类型模板字符串是指模板字符串,其中的表达式只能是特定的字符串字面量。 假设我们有一个函数status,该函数接受一个字符串参数并返回一个字符串,指示给定状态的消息。我们想要创建一个工具函数createStatus,该函数接受一个字符串字面量类型,并返回一个函数,该函数接受一个参数并返回一个指定状态的消息。 ```javascript function status(name: string) { switch (name) { case 'success': return 'Operation succeeded.'; case 'error': return 'An error occurred.'; case 'warning': return 'Warning: proceed with caution.'; default: throw new Error(`Unknown status: ${name}`); } } function createStatus<T extends string>(status: T) { return (message: string) => `${status}: ${message} (${new Date().toISOString()})`; } const successStatus = createStatus<'success'>('success'); const successMessage = successStatus(status('success')); console.log(successMessage); // success: Operation succeeded. (2023-04-02T00:00:00.000Z) ``` 在这个例子中,我们使用了两个高级类型:泛型和字面量类型。createStatus函数接受一个泛型类型参数T,该参数必须是一个字符串字面量类型。然后,它返回一个函数,该函数接受一个字符串参数,并返回一个字符串,其中包含状态和消息。 我们使用`createStatus<'success'>`来创建一个函数,该函数将状态设置为`'success'`,并使用status函数来获取状态的消息。我们将结果存储在successStatus变量中,并使用它来创建一个成功的消息。最后,我们将结果打印到控制台上。 这里使用的关键是`createStatus<'success'>('success')`,它告诉TypeScript,我们要创建一个状态为`'success'`的工具函数,该函数接受一个字符串字面量类型参数。这个字面量类型指定了一个具体的字符串值,而不是一个普通的字符串类型。这个字面量类型和泛型类型一起工作,使得createStatus函数能够自动推断出返回的函数的类型,而不需要手动指定。 在这个例子中,我们使用了模板字符串工具类型来创建字面量类型模板字符串。具体来说,我们使用了模板字符串工具类型${}来创建一个字符串模板,这个模板包含一个类型变量T和一个表达式${T}。这个模板可以用来创建一个字符串字面量类型,该类型等于模板中的${T}表达式的值。 在我们的例子中,我们使用了`${'success'}`模板来创建一个字符串字面量类型,该类型等于字符串`'success'`。我们将这个字面量类型用作createStatus函数的泛型类型参数,并将其传递给返回的函数,以指定状态的类型。 字符串模板工具类型 除了字面量类型模板字符串之外,TypeScript还提供了一些字符串模板工具类型,可以帮助我们操作字符串模板和字符串字面量类型。 **2、Uppercase** Uppercase工具类型可以将字符串转换为大写。例如,我们可以使用Uppercase将所有字母都大写的字符串字面量类型。 ```javascript type UppercaseGreeting = Uppercase<'hello, world'>; // 'HELLO, WORLD' ``` 我们还可以使用Uppercase将一个字符串转换为大写,并将其用作返回类型。 ```javascript function toUpper(str: string): Uppercase<string> { return str.toUpperCase(); } const greeting = toUpper('hello, world'); console.log(greeting); // 'HELLO, WORLD' ``` 在这个例子中,我们使用Uppercase将函数的返回类型设置为大写的字符串类型。我们使用toUpper函数将字符串转换为大写,并将结果打印到控制台上。 **3、Lowercase** Lowercase工具类型可以将字符串转换为小写。例如,我们可以使用Lowercase将所有字母都小写的字符串字面量类型。 ```javascript type LowercaseGreeting = Lowercase<'HELLO, WORLD'>; // 'hello, world' ``` 我们还可以使用Lowercase将一个字符串转换为小写,并将其用作返回类型。 ```javascript function toLower(str: string): Lowercase<string> { return str.toLowerCase(); } const greeting = toLower('HELLO, WORLD'); console.log(greeting); // 'hello, world' ``` 在这个例子中,我们使用Lowercase将函数的返回类型设置为小写的字符串类型。我们使用toLower函数将字符串转换为小写,并将结果打印到控制台上。 **4、Capitalize** Capitalize工具类型可以将字符串的第一个字母转换为大写。例如,我们可以使用Capitalize将一个字符串字面量类型的第一个字母大写。 ```javascript type CapitalizeGreeting = Capitalize<'hello, world'>; // 'Hello, world' ``` 我们还可以使用Capitalize将一个字符串的第一个字母大写,并将其用作返回类型。 ```javascript function capitalize(str: string): Capitalize<string> { return str.charAt(0).toUpperCase() + str.slice(1); } const greeting = capitalize('hello, world'); console.log(greeting); // 'Hello, world' ``` 在这个例子中,我们使用Capitalize将函数的返回类型设置为第一个字母大写的字符串类型。我们使用capitalize函数将字符串的第一个字母大写,并将结果打印到控制台上。 **5、Uncapitalize** Uncapitalize工具类型可以将字符串的第一个字母转换为小写。例如,我们可以使用Uncapitalize将一个字符串字面量类型的第一个字母小写。 ```javascript type UncapitalizeGreeting = Uncapitalize<'Hello, world'>; // 'hello, world' ``` 我们还可以使用Uncapitalize将一个字符串的第一个字母小写,并将其用作返回类型。 ```javascript function uncapitalize(str: string): Uncapitalize<string> { return str.charAt(0).toLowerCase() + str.slice(1); } const greeting = uncapitalize('Hello, world'); console.log(greeting); // 'hello, world' ``` 在这个例子中,我们使用Uncapitalize将函数的返回类型设置为第一个字母小写的字符串类型。我们使用uncapitalize函数将字符串的第一个字母小写,并将结果打印到控制台上。 **6、TemplateStringsArray** TemplateStringsArray工具类型表示一个模板字符串数组。它的成员类型是由字符串模板工具类型${}和字符串字面量类型构成的元组类型。 例如,下面的代码定义了一个GreetingTemplate类型,它表示一个包含两个模板字符串的数组。第一个模板字符串包含一个字符串变量${name},第二个模板字符串不包含变量。 ```javascript type GreetingTemplate = TemplateStringsArray<`${string}, world`, 'Hello, world'>; ``` 我们可以使用TemplateStringsArray将模板字符串数组用作函数参数,并使用解构语法将它们拆分成模板字符串和变量。 ```javascript function greet([template1, template2]: GreetingTemplate, name: string): string { return `${template1}${name}${template2}`; } const greeting = greet(['Hello, ', ', welcome to TypeScript!'], 'Alice'); console.log(greeting); // 'Hello, Alice, welcome to TypeScript!' ``` 在这个例子中,我们使用TemplateStringsArray将GreetingTemplate类型用作函数参数的类型。我们使用解构语法将GreetingTemplate数组拆分成两个模板字符串和一个字符串变量name。然后,我们使用${}语法将变量插入到第一个模板字符串中,并将结果返回。 **小结** 在章中,我们学习了如何使用TypeScript的模板字符串工具类型来创建和操作字符串字面量类型和模板字符串。
上一篇:
TypeScript模板字符串类型
下一篇:
TypeScript类型声明、类型指令与命名空间
该分类下的相关小册推荐:
TypeScript 全面进阶指南
TypeScript开发实战
剑指TypeScript