- TypeScript 基础
- TypeScript - 首页
- TypeScript - 路线图
- TypeScript - 概述
- TypeScript - 环境设置
- TypeScript - 基本语法
- TypeScript 与 JavaScript
- TypeScript - 特性
- TypeScript - 变量
- TypeScript - let & const
- TypeScript - 运算符
- TypeScript 基本类型
- TypeScript - 类型
- TypeScript - 类型注解
- TypeScript - 类型推断
- TypeScript - 数字
- TypeScript - 字符串
- TypeScript - 布尔值
- TypeScript - 数组
- TypeScript - 元组
- TypeScript - 枚举
- TypeScript - Any
- TypeScript - Never
- TypeScript - 联合类型
- TypeScript - 字面量类型
- TypeScript - 符号
- TypeScript - null 与 undefined
- TypeScript - 类型别名
- TypeScript 控制流
- TypeScript - 决策
- TypeScript - if 语句
- TypeScript - if else 语句
- TypeScript - 嵌套 if 语句
- TypeScript - switch 语句
- TypeScript - 循环
- TypeScript - for 循环
- TypeScript - while 循环
- TypeScript - do while 循环
- TypeScript 函数
- TypeScript - 函数
- TypeScript - 函数类型
- TypeScript - 可选参数
- TypeScript - 默认参数
- TypeScript - 匿名函数
- TypeScript - 函数构造器
- TypeScript - rest 参数
- TypeScript - 参数解构
- TypeScript - 箭头函数
- TypeScript 接口
- TypeScript - 接口
- TypeScript - 扩展接口
- TypeScript 类和对象
- TypeScript - 类
- TypeScript - 对象
- TypeScript - 访问修饰符
- TypeScript - 只读属性
- TypeScript - 继承
- TypeScript - 静态方法和属性
- TypeScript - 抽象类
- TypeScript - 访问器
- TypeScript - 鸭子类型
- TypeScript 高级类型
- TypeScript - 交叉类型
- TypeScript - 类型守卫
- TypeScript - 类型断言
- TypeScript 类型操作
- TypeScript - 从类型创建类型
- TypeScript - Keyof 类型运算符
- TypeScript - Typeof 类型运算符
- TypeScript - 索引访问类型
- TypeScript - 条件类型
- TypeScript - 映射类型
- TypeScript - 模板字面量类型
- TypeScript 泛型
- TypeScript - 泛型
- TypeScript - 泛型约束
- TypeScript - 泛型接口
- TypeScript - 泛型类
- TypeScript 其他
- TypeScript - 三斜线指令
- TypeScript - 命名空间
- TypeScript - 模块
- TypeScript - 环境声明
- TypeScript - 装饰器
- TypeScript - 类型兼容性
- TypeScript - Date 对象
- TypeScript - 迭代器和生成器
- TypeScript - Mixins
- TypeScript - 实用程序类型
- TypeScript - 装箱和拆箱
- TypeScript - tsconfig.json
- 从 JavaScript 到 TypeScript
- TypeScript 有用资源
- TypeScript - 快速指南
- TypeScript - 有用资源
- TypeScript - 讨论
TypeScript - 类型注解
类型注解
在 TypeScript 中,类型注解提供了一种定义(或注释)变量、类成员、函数参数和返回值的数据类型的方式。
TypeScript 是一种静态类型的编程语言,可以选择性地支持动态类型。由于这种支持,任何 JavaScript 文件(.js)都可以直接重命名为 TypeScript 文件(.ts)。众所周知,JavaScript 是一种动态类型的编程语言,而 TypeScript 是 JavaScript 的超集。TypeScript 支持 JavaScript 的所有功能,以及一些额外的特性。
TypeScript 提供了如何注释数据类型的方法。“类型注解”一词意味着分配数据类型。
变量类型注解
TypeScript 支持变量的静态类型。我们在声明变量时可以注释变量的类型。TypeScript 还可选地支持 JavaScript 中的动态类型。
例如,当我们定义一个保存数字的变量时,我们可以按如下方式定义它 -
var x = 10;
上述声明在 TypeScript 中是完全允许的,因为它支持动态类型。
我们可以像下面这样注释变量 x 的数据类型 –
var x: number = 10;
要进行类型注解,可以在变量名后面使用冒号 (:),后面跟着变量的数据类型。
var varName: datatype
以下是使用不同数据类型注释变量的不同示例。
let name: string; let age: number; let isEnrolled: boolean;
在上面的示例中,我们将字符串作为变量 name 的类型添加。类似地,age 和 isEnrolled 分别用 number 和 boolean 类型进行了注释。
示例
让我们尝试以下示例。在这个示例中,我们声明了两个变量 pName 和 pAge。我们将 pName 注释为字符串,pAge 注释为数字。
let pName: string; let pAge: number; pName = "John Doe"; pAge = 35; console.log(`Name of the person is ${pName} and his age is ${pAge}`);
编译后,TypeScript 编译器将生成以下 JavaScript 代码 –
let pName; let pAge; pName = "John Doe"; pAge = 35; console.log(`Name of the person is ${pName} and his age is ${pAge}`);
上述 JavaScript 代码的输出如下 –
Name of the person is John Doe and his age is 35
函数类型注解
您可以在 TypeScript 中向函数添加类型。函数的类型有两个部分 – 函数参数和函数的返回类型。
函数参数类型注解
我们可以在函数定义中注释参数的数据类型。
function displayDetails(id: number, name: string){ console.log("ID:", id); console.log("Name", name); } displayDetails(123,"John");
编译后,它将生成以下 JavaScript 代码 –
function displayDetails(id, name) { console.log("ID:", id); console.log("Name:", name); } displayDetails(123, "John");
上面示例代码的结果如下 –
ID: 123 Name: John
函数返回类型注解
您可以添加函数返回的数据类型。它将是函数返回的值的数据类型。
function add (x: number, y: number): number { return x + y; }
如果您没有编写返回类型,则任何函数的默认返回类型将为 undefined。
如果函数没有返回值,则应使用 void 作为函数返回类型,而不是将其省略。
例如,而不是编写以下内容 –
function greet(name: string){ console.log(`Hello Mr. ${name}. Welcome to Tutorials Point.`); }
使用 void 作为返回类型编写函数,如下所示 –
function greet(name: string): void { console.log(`Hello Mr. ${name}. Welcome to Tutorials Point.`); }
示例
在下面的示例中,我们注释了函数参数及其返回类型。函数 add 接收两个参数 - x 和 y,类型为 number,以及一个类型为 number 的值。返回值是传递给函数的参数的总和。
function add(x: number, y: number): number { return x + y; } console.log(add(2,3))
编译后,它将生成以下 JavaScript 代码 –
function add(x, y) { return x + y; } console.log(add(2, 3));
上述代码的输出如下 −
5
对象属性类型注解
您可以使用类型注解向对象的属性添加类型。
让我们使用接口定义一个对象,如下所示 −
interface Person { name: string; age: number; } const person: Person = { name: "John Doe", age: 35, }
在上面的示例中,我们分别将字符串和数字类型添加到 name 和 age 属性。
您只能将字符串值分配给 name 属性,类似地,只能将数字值分配给 age 属性。假设您尝试向 age 添加字符串,它将抛出错误。
类型“string”无法分配给类型“number”。
示例
让我们举一个完整的例子。在这个例子中,我们定义了一个名为 Person 的接口,它有两个属性 – name 和 age。name 属性注释为字符串,age 注释为数字。我们使用接口 Person 创建一个名为 person 的对象。然后最后,我们在控制台中显示对象属性。
interface Person { name: string; age: number; } const person: Person = { name: "John Doe", age: 35, } console.log(`The person's name is ${person.name} and person's age is ${person.age}`);
编译后,它将生成以下 JavaScript 代码 −
const person = { name: "John Doe", age: 35, }; console.log(`The person's name is ${person.name} and person's age is ${person.age}`);
上述示例代码的输出如下 −
The person's name is John Doe and person's age is 35
建议在 TypeScript 中对变量、函数参数和返回类型的类型注解等进行类型注解。但 TypeScript 也像 JavaScript 一样支持动态类型。正如您已经知道的那样,TypeScript 支持所有 ECMAScript 特性。