TypeScript 基础类型
TypeScript 基础类型
数据类型
使用 unknown 类型处理不确定的数据,比使用 any 类型更加安全
| 类型 | 描述 | 示例 |
|---|---|---|
string |
字符串,支持模板字符串 | let name: string = "Alice"; |
number |
数字,包括整数和浮点数 | let age: number = 30; |
boolean |
布尔值 true 或 false |
let isDone: boolean = true; |
array |
数组,xx[] 或 Array<xx> |
let list: number[] = [1, 2, 3]; |
tuple |
元组,已知类型和长度的数组 | let person: [string, number] = ["qt", 30] |
enum |
枚举,定义一组命名常量 | enum Color { Red, Green, Blue }; |
any |
任意类型,会绕过编译时的类型检查 | let value: any = 42; |
void |
无返回值(常用于函数) | function log(): void {} |
null |
空值 | let empty: null = null; |
undefined |
未定义 | let undef: undefined = undefined; |
never |
没有返回值,表示函数不会正常结束 | function e(): never {throw new Error('e')} |
object |
非原始类型 | let obj: object = { name: "Alice" }; |
union |
联合类型,表示可以是多种类型之一 | |
unknown |
不确定类型,需类型检查后再使用 | let value: unknown = "Hello"; |
null 和 undefined
null 和 undefined 是其他任何类型(包括 void,但不包括 never)的子类型,可以赋值给其它类型。
在 TypeScript 中启用严格的空校验
--strictNullChecks后,就可以使得 null 和 undefined 只能被赋值给 void 或本身对应的类型
// 启用 --strictNullChecks
let x: number;
x = 1; // 编译正确
x = undefined; // 编译错误
x = null; // 编译错误
// 如果一个类型可能出现 null 或 undefined, 可以用 | 来支持多种类型
let y: number | null | undefined;
y = 1; // 编译正确
y = undefined; // 编译正确
y = null; // 编译正确
never
never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。
never 类型表示不会有返回值,通常用于抛出错误或进入无限循环的函数,表示该函数永远不会正常结束。
let x: never;
let y: number;
x = 123;// 编译错误,数字类型不能转为 never 类型
x = (() => { throw new Error('exception') })(); // 运行正确
y = (() => { throw new Error('exception') })(); // 运行正确
// 返回值为 never 的函数,可以是抛出异常的情况
function error(message: string): never {
throw new Error(message);
}
// 返回值为 never 的函数,可以是无法被执行到的终止点的情况
function loop(): never {
while (true) { }
}
基本类型自动装箱
在 JavaScript 中,值类型(基本类型)本身不是对象,因此它们不直接拥有属性和方法。基本类型包括 number、string、boolean、null、undefined 和 symbol, 这些类型的值都是简单的数据,而不是复杂的数据结构。
然而,JavaScript 为每种基本类型都提供了一个对应的包装对象。当你尝试访问一个基本类型的属性或方法时,JavaScript 会临时地将这个基本类型的值转换为对应的包装对象,以便可以调用该对象上的属性和方法。这种转换是自动进行的,通常被称为“装箱”。一旦属性和方法的使用完毕,这个临时对象就会被销毁,值又恢复为其原始的基本类型。
var x = "John";
var y = new String("John");
console.log(typeof x) // 返回 string
console.log(typeof y) // 返回 object
console.log(x === y) // 结果为 false,因为 x 是字符串,y 是对象
2016-12-13
本文来自博客园,作者:白乾涛,转载请注明原文链接:https://www.cnblogs.com/baiqiantao/p/5889710.html

浙公网安备 33010602011771号