TypeScript文档 - 基础类型

1、布尔值 boolean

布尔值true false

let checked: boolean = false;
// or
let checked: boolean = true;

2、数字 number

TS中所有的数字都是浮点值,支持:十进制、十六进制、八进制、二进制

let decimal: number = 6; // 十进制
let hex: number = 0xf; // 十六进制
let octal: number = 0o744; // 八进制
let binary: number = 0b1010; // 二进制

3、字符串string

可使用双引号""或者单引号''包含字符串数据

let color: string = "blue";
let fruit: string = 'apple';

模板字符串

let age: number = 26;
let name: string = "一路繁华的夏天";
let message: string = `我的昵称是${name},
我今年${age}岁了!`

4、数组Array

数组元素数据类型后跟[]

let list: number[] = [1, 2, 3];

Array<数组元素类型>

let list: Array<number> = [1, 2, 3];

5、元组Tuple

使用固定数量、固定类型(不必一样)的元素来表示的数组

let data: [string, number];
data = ["hello", 1];
// 错误展示
// 缺少类型
data = ["hello"]; // Property '1' is missing in type '[string]' but required in type '[string, number]'
// 对应类型中没有此方法
data[1].substring(1); // Property 'substring' does not exist on type 'number'
// 未匹配到对应位置的类型
data[2] = "err"; // Type '3' is not assignable to type 'undefined'

6、枚举enum

Enum类型的变量成员默认是从0开始递增,也可以设置初始值为其他的,如果存在成员有其他非数字类型的数据,在下一次未设置具体数据的成员的前一个成员必须为数字

enum Color { Red, Green, Blue } // 0 1 2
enum Color { Red = 1, Green, Blue } // 1 2 3
enum Color { Red, Green = 3, Blue } // 0 3 4
enum Color { Red, Green = "", Blue } // Error: Enum member must have initializer.

读取Enum的变量成员

enum Color { Red = 1, Green, Blue } // 1 2 3
let green: Color = Color.Green; // 2

通过值查询Enum变量名称

let value: number = 2;
enum Color { Red, Green, Blue }; // 0 1 2
let key: string = Color[value]; // Blue

7、任意类型any

any用来描述未知变量类型的数据,此时可以设置any通过编译时检查,调用方法也不会进行类型判断,因为在运行阶段有可能是存在对应方法的。

let notSure: any = false;
notSure = "1";
notSure = undefined;
notSure.getData();
notSure = 2;
notSure.toFixed(2);
// 知道部分数据类型
let anyArr: any[] = [1, false, "hello"];
anyArr[1] = 100;

Object同样允许分配任何值,但是不能调用任意方法,就算存在也不可以调用

let notSure: Object = 4;
notSure.toFixed(2);

8、void

一般用于表示函数无返回值类型

function logMessage(message: string): void {
    console.log(`Log ${message}`);
}

也可用于变量类型定义但是能赋值undefined或者未开启--strictNullChecks时可以赋值null,也可以赋值never类型的值

let voidVal: void = undefined;
voidVal = null; // --strictNullChecks模式下 Error:Type 'null' is not assignable to type 'void'.

9、undefinednull类型

let u: undefined = undefined;
let n: null = null;

不设置--strictNullChecks情况下,由于nullundefined类型是所有其他类型的子类型(除了never),所以定义的的变量可以赋值给其他类型变量

let u: undefined = undefined;
let n: null = null;

let age: number = u;
let height: string = n;

设置--strictNullChecks情况下,nullundefined类型都可以赋值给anyundefined可以赋值给void

let u: undefined = undefined;
let n: null = null;

let voidVal: void = u;
let height: any = n;
height = u;

10、never

never用来表示永远不会出现的类型;
例如:函数总会抛出异常或者函说永远不会有返回值

// 总会抛出异常
function throwError(): never {
    throw new Error();
}
// 永不会有返回值
function noReturns(): never {
    while(true) {}
}
// return本身为never
function returnNever(): never {
    return throwError();
}

never是所有类型的子类型,可以分配给其他类型;但是没有类型(包括nullundefined)是never的子类型即没有类型可以分配给never除了never本身;

function getError(): never {
    throw new Error();
}
let neverVal: never = getError();
let booleanVal: boolean = neverVal;
let numberVal: number = neverVal;
let undefinedVal: undefined = neverVal;
let nullVal: null = neverVal;
let stringVal: string = neverVal;
let anyVal: any = neverVal;
let voidVal: void = neverVal;
let symbolVal: symbol = neverVal;
let bigintVal: bigint = neverVal;;

11、object

object是非原始类型,即任何不是boolean number string bigint symbol null undefined的类型

let obj: object = {};
obj = neverVal; // never是所有类型的子类型 可以分配给所有类型
obj = voidVal;  // Error:Type 'void' is not assignable to type 'object'.
obj = numberVal;  // Error:Type 'number' is not assignable to type 'object'.
obj = booleanVal;  // Error:Type 'boolean' is not assignable to type 'object'.
obj = stringVal;  // Error:Type 'string' is not assignable to type 'object'.
obj = bigintVal;  // Error:Type 'bigint' is not assignable to type 'object'.
obj = symbolVal; // Error:Type 'symbol' is not assignable to type 'object'.

// 开启--strictNullChecks
obj = nullVal;  // Error:Type 'null' is not assignable to type 'object'.
obj = undefinedVal;  // Error:Type 'undefined' is not assignable to type 'object'.

// 关闭--strictNullChecks
obj = nullVal; // null类型是其余类型的子类型
obj = undefinedVal; // undefined类型是其余类型的子类型

12、类型断言

类型断言即告诉编译器我比编译器更知道变量类型,不需要执行类型检查;
类型断言有两种语法:

let someValue: any = "Hello World";
// 尖括号语法 <type>value
let stringLength: number = (<string>someValue).length
// as语法
let stringLength: number = (someValue as string).length
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值