TS 常见类型

120 阅读3分钟

基础类型

原始类型:string ,number ,boolean

// 字符串
let name: string = "toy";

// 数字
let decLiteral: number = 0;

// 布尔
let isDone: boolean = false;

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

数组

// 数组 表示的两种写法
let list: number[] = [1, 2, 3];
let list2: Array<number> = [1, 2, 3];

any

any 表示任意类型,TypeScript 有一个特殊的类型 any 当你不希望一个值导致类型检查错误的时候,就可以设置为 any。不作任何类型约束。

any 也可被任意类型赋值,可以赋值给任意类型。

//  可以被赋值为任意类型       
let d: any;
d = 123;
d = "hello";
// any 类型可赋值给任意类型
let sss ="hell";
sss = d;

unknow

unknown 表示未知类型,所有类型都可以赋值给unknown 类型,但与 any不同的是, unknown 类型的变量只能赋值给 anyunknown 类型,其他类型不允许赋值。

let s = "hello";
let an1:any = 12;
let un: unknown = "hi";
let un2: unknown = "bye";

// 任何类型都可以赋值给 unknow
un = "abc";
un = an1;
un = 123;

// unknow 类型的值只能赋值给 any 和 unknow 的,其他类型的不允许赋值
an1 = un; // 可赋值给 any
un2 = un; // 可赋值给 unknow
s = un; // error: 不能将类型“unknown”分配给类型“string”。

如果想让 unknow 赋值给其他类型:有以下两种方法

// 方法一:使用断言类型,确定类型范围
s = un as string; // 断言类型
s = <string> un;

// 方法二: 使用类型判断
if (typeof un === 'string') {
  s = un;
}

never

never表示永远不存在的值,例如:那些总是会抛出异常或函数中执行无限循环的代码(死循环)的函数返回值类型

// 抛出异常
function error(msg: string): never {
  throw new Error(msg);
} // 抛出异常会直接中断程序运行,这样程序就运行不到返回值那一步了,即具有不可达的终点,也就永不存在返回了

// 死循环
function loopForever(): never {
  while (true) {};
} //同样程序永远无法运行到函数返回值那一步,即永不存在返回

任何类型的值都不能赋值给 never 类型, 除了never 类型本身,any 类型也不可以。

let never1:never;
let any2:any = "hi";
never1 = any2; // error: 不能将类型“any”分配给类型“never”。

void

void 表示无任何类型,一般用在函数无任何返回值或返回值为undefined 时。

function hello(): void {
  console.log("Hello");
}

也可以声明void 类型的变量,但是只能将 null 和 undefined 类型的赋值给它。

let void1:void;
void1 = null;
void1 = undefined;
void1 = 123; // Error: 不能将类型“number”分配给类型“void”。

枚举

枚举是typeScript 中的新特性,用于描述一个值可能是多个常量中的一个。

// 数字枚举
enum Direction {
  Up = 1,// 默认值
  Down,
  Left,
  Right,
}

// 字符串枚举
enum Color{
    Red:"red",
    Green:"green",
    Blue:"blue"
}
let c:Color = Color.Red

元组

元组表示一个已知元素数量和类型的数组,各元素类型不必相同,固定长度的数组,长度和类型不符时都会报错

// 元组  表示一个已知元素数量和类型的数组,各元素类型不必相同,固定长度的数组,长度和类型不符时都会报错
let x: [string, number];
x = ["hello", 1];

对象类型

object 类型 ,表示所有非原始类型,不能把原始类型的值赋值给 object

let obj:object;
obj="hi";// 不能将类型“string”分配给类型“object”。
obj =1; // 不能将类型“number”分配给类型“object”。
obj ={}

Object 代表所有拥有 toString、hasOwnProperty 方法的类型,所有原始类型都可以赋值给 Object

// Object  非原始类型
let bigObject: Object;
bigObject = "object";
bigObject = 12;
bigObject = {};

函数

// 函数声明
function add(a:number,b:number):number{
  return a + b;
};

// 默认参数
function add1(a:number,b:number = 0):number{
  return a + b;
};

// 可选参数
function add2(x: number, y?: number): number {
  return y ? x + y : x;
}

相关文章:

ts 介绍

如何理解ts中的泛型