typescript数据类型

本文详细介绍了 TypeScript 的原始数据类型(string, number, boolean, void, undefined, null)、对象类型(包括对象、数组和函数定义)、元组、数组泛型、枚举类型以及任意类型。展示了如何在不同场景中使用这些类型进行精确的数据约束和类型安全编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原始数据类型

// string,存放字符串
let str: string = 'string-type'

// number,存放数值
let num: number = 0

// boolean,存放布尔值
let bool: boolean = true

// void,存放undefined
let v: void = undefined

// undefined,存放undefined
let u: undefined = undefined

// null,存放null
let n: null = null

这里需要注意的是,严格模式下,string、number类型的变量初始值必须为定义的相同类型的数据,不能为null,否则报错
在这里插入图片描述
typescript还有一种symbol类型,对应了es6中的Symbol

let s: symbol = Symbol()

但需要注意的是,因为这是es6中新增的一种基础类型,所以我们需要在配置文件中将target修改为es2015,否则它无法识别。
在这里插入图片描述

对象类型

// object 不仅可以定义对象,还可以定义数组、函数等类型的数据
let o: object = {}
let f: object = function() {}
let a: object = []

// 如果我们希望只能定义对象,可以通过字面量的形式来定义
// 如果只规定{},那么我们可以在内部定义任意类型的属性
let obj: {} = {
	name: 'typescript'
}

// 规定对象内属性的数据类型,但是一旦我们规定了对象内属性的数据类型,那么对象内的属性必须严格按照我们定义的类型,不能多也不能少
let obj1: {
	name: string,
	age: number
} = {
	name: 'typescript',
	age: 10
}
obj1.name = 0 // 赋值错误的类型数据,会报错
obj1.log = 'log' // 定义额外的属性,会报错

// 属性的多类型,通过|来使变量拥有多种数据类型
let obj2: {
	name: string | number
} = {
	name: '1'
}

数组类型

数组泛型

// Array<子元素类型>,数组内的数据类型必须是<>内定义的类型
let arr: Array<number> = [1, 2, 3]

// 我们也可以定义多种数据类型
let arr1: Array<number|string> = [1, 2, '3']

let arr2: number[] = [1,2,3]

// 我们也可以这样用
let arr2: (number|string)[] = [1,2,'ss']

元组trup
元组是具有固定数组数量和类型的数组

// 固定数量的数组,元组trup,数组的数量和数组每个元素的类型都必须和定义的一致
let arr1: [number, string] = [1, 'ssss']

函数类型

同样的,我们也可以定义函数参数的数据类型和函数返回值的数据类型,那么在调用的时候,传入的数据的类型必须和定义的一致,且函数返回值也需要和定义的一致
普通函数

// function name(param: <type>): <return type> {}
function test1(param1: number, param2: string): string {
	return param2
}

test1(1, 'typescript')

回调函数
如果函数作为回调函数传入函数,同样的,回调函数也可以被定义,方式和普通函数是类似的的

// function (callback: (param: <type>, ...) => <return type>) {}
function test2(callback: (param1: string) => void): void{
	callback('hi typescript')
}

枚举类型

枚举类型是一个列举了若干可能的集合

// 默认不赋值情况下,枚举类型的值是从0开始,并往下递增1
enum status {
	success, // 0
	loading, // 1
	fail // 2
}

// 我们也可以定义初始的开始值(必须是数值),后面的值也会向下递增1
enum status {
	success = 2, // 2
	loading, // 3
	fail // 4
}

// 也可以定义任意具体的值
enum status {
	success = 0, // 0
	loading = 1, // 1
	fail = 2 // 2
}

// 然后可以在对应的地方作为值来使用
let obj: {} = {
	status: status.success // 0
}

任意类型

任意类型,说明变量可以接收任意类型的数据,类似于JavaScript的变量

// param: any = value
// 函数中
function test(param: any): void {
	console.log(any)
}

test(1)
test('any')

// 变量中
let a: any = 1
a = 'any'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值