JavaScript (JS) 和 TypeScript (TS) 都是广泛使用的编程语言,JavaScript是一种动态类型语言,变量的类型在运行时确定。这意味着在声明变量时不需要指定其类型,编译器也不会强制你这样做。
而TypeScript是一种静态类型语言,变量的类型在编译时确定(即静态检查)。你可以在声明变量时指定其类型,这有助于在开发过程中捕获类型错误。
本篇文章将介绍一下TypeScript的常用类型
1.数组(常用第一种)
语法: let arr : 数据类型 [ ] =
或: let arr : Array < 数据类型 > =
例:
// 声明方法1
let arr1: number[] = [];//定义数组类型且里面只能存放数字
// arr1.push('6');//静态检查,添加字符串报错
// 声明方法2
let arr2: Array<string> = [];//定义数组类型且里面只能存放字符串
2.元组
元组用于定义数组中每一项的类型以及数组长度
语法:let arr : [ 数据类型1 , 数据类型2 ] = [ 元素1 , 元素2 ]
例:
let arr3: [number, string, boolean] = [1, '2', false];
3.类型别名
为类型起一个新类名,以提高代码的可读性和可维护性
语法:用关键字type声明 , type 变量 = 数据类型
例:
type Arr = ( number | string | boolean ) [ ];
//定义Arr为数组类型,里面可以放数值、字符串、布尔值类型的元素
let arr5: Arr = [1, '2', true];
4.联合类型
由两个或多个其他类型组成的类型,表示可以是这些类型中的任意一种
语法:用 | 表示
如:let demo:数据类型1 | 数据类型2 =
例:
let num1: string | number = 10;//num1可以是字符串或数值
num1 = '10';
// num1 = true;//未在定义的数据类型会报错
5.函数类型
给函数的参数和返回值声明类型
语法:function fn ( n : number ) : number { }
括号内的n : number定义参数为number类型
括号后的:number定义返回值为number类型
例:
// 同时指定参数和返回值类型
const add1: (num1: number, num2: number) => number = (num1, num2) => num1 + num2
// 当函数作为表达式时,可以通过类似于箭头函数形式的语法来为函数添加类型
6.void类型
函数没有返回值,声明void类型
例:
const greet = (name: string): void => console.log(name);
greet('马多');
7.对象类型
let obj = {
name: 'zs',
age: 18
}
type Obj = {
age: number,
name: string,
say: (n: number) => number,
sayHi(): void,
}
let obj2: Obj = {
name: 'ls',
age: 20,
say: (n: number) => {
return n;
},
sayHi(): void {
console.log('hi');
},
}
obj2.say(1);
8.接口
当一个对象类型被使用多次,一般会使用接口interface来定义对象的类型。
8.1 使用接口interface去声明对象类型
//定义类型
interface Params1 {
pageSize: number,
pageNum?: number,//加?表示可选
type: string
}
//创建对象
let data1: Params1 = {
pageSize: 10,
pageNum: 1,
type: 'free'
}
let data2: Params1 = {
pageSize: 10,
type: 'free'
//不加pageNum也行
}
8.2 interface和type的区别:
interface只能为对象指定类型
type可以给任意类型指定别名
8.3 interface声明时要使用大驼峰命名
8.4 interface可以通过extends关键字来继承。
interface A {
name: string
}
interface B extends A {
age: number
}
let objE: B = {
name: '马多',
age: 20
}
9.类型断言
可以使用类型断言来指定更具体的类型。
语法: 参数 as 类型
或: < 类型 > 参数
例:
//不使用类型断言
function fn3(n: (string | number[])) {
return n.length
}
fn3('aaa');//可以调用
//fn4(1000);//会报错,参数数据类型不对
// 使用类型断言后
// 写法1:
function fn4(n: (string | number | number[])) {
return (n as string).length//定义n是字符串类型
}
fn4('aaa');
fn4(1000);//都可以调用
//写法2:
function fn5(n: (string | number | number[])) {
return (<string>n).length//定义n是字符串类型
}
fn5('aaa');
fn5(1000);//都可以调用
10.枚举类型
使用enum关键字定义枚举
例:
enum Status {
'免费' = 0,
'精品' = 1,
'折扣' = 2,
//枚举可以自定义123,不按顺序如136也行
}
//模拟请求data实例
const data3 = {
msg: '操作成功',
code: 0,
data: {
statu: 1
}
}
console.log(data3.data.statu);//精品
11.any类型
可以是任意类型
例:
let demo:any
demo=[1,2];
demo =10;
demo = 'set'

2907

被折叠的 条评论
为什么被折叠?



