TypeScript—TypeScript的基本类型(三)

类型声明

  • 类型声明是TS非常重要的一个特点;
  • 通过类型声明可以指定TS中变量(参数、形参)的类型;
  • 指定类型后,当为变量赋值时,TS编译器会自动检查值是否符合类型声明,符合则赋值,否则报错;
  • 简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值;

语法: var/let/const 变量名: 数据类型 = 值

let 变量: 类型; 
let 变量: 类型 = 值; 
function fn(参数: 类型, 参数: 类型): 类型{ ... }

自动类型判断

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

类型

类型

例子

描述

number

1, -33, 2.5

任意数字

string

'hello', "hi"

任意字符串

boolean

true、false

布尔值true或false

字面量

其本身

限制变量的值就是该字面量的值

any

*

任意类型

unknown

*

类型安全的any

void

空值(undefined)

没有值(或undefined)

never

没有值

不能是任何值

object

{name:'孙悟空'}

任意的JS对象

array

[1,2,3]

任意JS数组

tuple

[4,5]

元素,TS新增类型,固定长度的数组

enum

enum{A, B}

枚举,TS中新增类型

  • number

二进制,十进制,八进制 十六进制等数字
let decLiteral: number = 6;//10进制
let binaryLiteral: number = 0b1010;//2进制
let hexLiteral: number = 0xf00d;//16进制
let octalLiteral: number = 0o744;//8进制
  • 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

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

unknown 表示未知类型的值

unknown 实际上就是一个类型安全的any

unknown 类型的变量,不能直接赋值给其他变量

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

let unusable: void = undefined;
  • never

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

[propName: string]: any 表示任意类型的属性

let a: {name: string, [propName: string]: any };

a = { name: '张三',age: 18,sex: '男'};

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;

数据类型的补充

  • ​​​​​联合类型
: number|string 联合类型注解
type A = number | string | boolean;
let a: A;
a = "123";
a = 123;
a = true
  • 可选类型的补充

可选类型 可以看作undefined和所写类型的一个联合类型
?可选择的类型

//函数可选类型
function fn(msg?:string){ //  undefined | string
    console.log(msg)
}
fn();
fn(undefined);      //  undefined
fn("hello world")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周橘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值