TypeScript常用类型

        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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值