Skip to content
此页目录
本文总阅读量

TypeScript 类型声明

ts 中的数据类型

  • 布尔类型(boolean)
  • 数字类型(number)
  • 字符串类型(string)
  • 数组类型(array)
  • 元组类型(tuple):属于数组的一种
  • 枚举类型(enum)
  • 任意类型(any)
  • null 和 undefined
  • void类型
  • never类型

布尔类型(boolean)

ts
let flag:boolean=true;
flag=false;  //正确
flag=123;  //错误

数字类型(number)

ts
let num:number=123;
num=456; // 正确
num='str';    //错误

字符串类型(string)

ts
let str:string=`字符串`;
str='haha';  //正确
str=true;  //错误

数组类型(array)

ts
let arr: Array<number> = [1]
let arr1: number[] = [1]

元组类型(tuple)

ts
let arr:[number,string]=[123,'string'];
let arr2:Array<number>=[11,22,33];
let arr3: any[] = [1,'STR'] 
let arr4: Array<any> = [1,'STR']

枚举类型(enum)

ts
// 格式
enum 枚举名{ 
  标识符[=整型常数], 
  标识符[=整型常数], 
  ... 
  标识符[=整型常数], 
}
// [=整型常数] 内表示可选
  • 设置值
ts
enum F {
  a = '未授权',
  b = '拒绝访问',
  c = 500,
}
console.log(F.b); // '拒绝访问'
console.log(F[500]); // c
  • 默认值
ts
enum Color{Red,Green,Blue} /* 默认下标 0 开始 */
console.log(Color.Red); // 0
console.log(Color.Green); // 1
  • 部分赋值
ts
enum Color1 {blue,red=3,'orange'};
console.log(Color1.blue,Color1.red,Color1.orange); // 0 3 4

enum Err {'undefined'=-2,'null','success'=1};
console.log(Err.null); // -1
  • 声明变量
ts
enum Err {'undefined'=-2,'null','success'=1};
let myColor: Err = Err.null // -1
let myColor1: Err = Err.info // 类型“typeof Err”上不存在属性“info”。

void类型

void:没有返回值,never 表示不存在的类型

ts
function fn(n:number, str:string): void {
  return undefined
  return null
  return 1 // error 报错
}

function run():undefined{
  console.log('run')
}
run(); // 错误,返回值不为 'viod' 或 'any' 必须要返回值

function run():number{
  return 123;
}

run();

never类型

never 表示不存在的值

ts
var a:never;
a='a'; //错误的写法
a=(()=>{
  throw new Error('错误');
})()
a = () => {
  while(true){
  }
}

联合类型

ts
function fn(val:number | string){}
fn(1);
fn('str')
fn(null) // 错误

类型断言

方式一: <类型>值

方式二: 值 as 类型 (tsx 中只能用这种方式)

ts
function fn1(val: number | string):number {
  if((val as string).length){
    return (<string>val).length
  }else{
    return val.toString().length;
  }
}

const 断言

看以下示例:

ts
const req = { url: "https://example.com", method: "GET" };
handleRequest(req.url, req.method); // 报错,参数2获得的是"string",而不是"GET" | "POST"

你可以使用断言来传参:

ts
// 1:在声明时断言他为"GET",防止后续被再次赋值。
const req = { url: "https://example.com", method: "GET" as "GET" };
// 2:传入时断言他为"GET",原来的对象还能赋值
handleRequest(req.url, req.method as "GET");

也可以使用as const将整个对象转换为类型文字:

ts
const req = { url: "https://example.com", method: "GET" } as const;
handleRequest(req.url, req.method);

评论

交流群