【TypeScript】---基础类型

目录

类型声明

语法:

类型:

number

boolean

string

any

unknown

void

never

object

array

tuple

enum

类型断言

函数

数组

元组 Tuple


TypeScript中的基本类型

之前学习得js的数据类型有booleannumberstringundefinednullsymbolbigintobject

在TS中新增voidanyunknownnever

类型声明

  • 类型声明是TS非常重要的一个特点;

  • 通过类型声明可以指定TS中变量(参数、形参)的类型;

  • 指定类型后,当为变量赋值时,TS编译器会自动检查值是否符合类型声明,符合则赋值,否则报错;

let n: number = 1
n = 3
n = '1' // 编辑器报错,不能将字符串赋值给number类型的变量

简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值;

语法:

let 变量: 类型;

let 变量: 类型 = 值;

function fn(参数: 类型, 参数: 类型): 类型{
    ...
}

  • 自动类型判断

    • TS拥有自动的类型判断机制
    • 当对变量的声明和赋值是同时进行的,TS编译器会自动判断变量的类型
    • 所以如果你的变量的声明和赋值时同时进行的,可以省略掉类型声明

类型:

类型例子描述
number1, -33, 2.5任意数字
string'hi', "hi", hi任意字符串
booleantrue、false布尔值true或false
字面量其本身限制变量的值就是该字面量的值
any*任意类型
unknown*类型安全的any
void空值(undefined)没有值(或undefined)
never没有值不能是任何值
object{name:'孙悟空'}任意的JS对象
array[1,2,3]任意JS数组
tuple[4,5]元素,TS新增类型,固定长度数组
enumenum{A, B}枚举,TS中新增类型
  • number

    let decimal: number = 6;
    let hex: number = 0xf00d;
    let binary: number = 0b1010;
    let octal: number = 0o744;
    let big: bigint = 100n;
  • boolean

    let isDone: boolean = false;
  • string

    let color: string = "blue";
    color = 'red';
    
    let fullName: string = `Bob Bobbington`;
    let age: number = 37;
    let sentence: string = `Hello, my name is ${fullName}.
    
    I'll be ${age + 1} years old next month.`;
  • 字面量

    也可以使用字面量去指定变量的类型,通过字面量可以确定变量的取值范围
let color: 'red' | 'blue' | 'black';
let num: 1 | 2 | 3 | 4 | 5;
  • any

     表示的是任意类型,一个变量设置类型为 any 后,相当于对该变量关闭了TS的类型检测。

    隐式any:如果只声明变量不指定类型不给变量赋值,变量就是any类型的

    当把any类型的变量可以赋值给其他类型的变量,不会报错

    let d: any = 4;
    d = 'hello';
    d = true;
  • unknown

    let notSure: unknown = 4;
    notSure = 'hello';
  • void

unknownany的区别就是,将unknown类型变量赋值给其他任意类型的变量时,会报错,可以这样理解:unknown类型的变量就是类型安全的any,不能直接赋值给其他类型的变量

let unusable: void = undefined;
  • never

never 表示永远不会返回结果

function error(message: string): never {
  throw new Error(message);
}
  • object

    let obj: object = {};
  • array

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

    tuple

  • let x: [string, number];
    x = ["hello", 10]; 
  • enum

    enum Color {
      Red,
      Green,
      Blue,
    }
    let c: Color = Color.Green;
    
    enum Color {
      Red = 1,
      Green,
      Blue,
    }
    let c: Color = Color.Green;
    
    enum Color {
      Red = 1,
      Green = 2,
      Blue = 4,
    }
    let c: Color = Color.Green;

类型断言

  • 有些情况下,变量的类型对于我们来说是很明确,但是TS编译器却并不清楚,此时,可以通过类型断言来告诉编译器变量的类型,断言有两种形式:

    • 第一种

      let someValue: unknown = "this is a string";
      let strLength: number = (someValue as string).length;
    • 第二种

      ​​​​​​​let someValue: unknown = "this is a string";
      let strLength: number = (<string>someValue).length;

函数

和对象一样,我们一般会限制函数有几个参数,参数的类型,返回值的类型,所以就可以以一种类似箭头函数的方式来声明一个函数类型的变量

// 定义函数结构
let fn: (a: number, b: number) => number

数组

比较常用的就是这种方式: 在元素类型后面接上 []:

let arr: number[] = [1, 2, 3]
let arr2: string[] = ['y', 'k']

元组 Tuple

元组是TS新出的类型,表示固定长度的array

元组中包含的元素,必须与声明的类型一致,而且不能、不能,甚至顺序都不能不一样

  • wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值