TypeScript--类型声明

简介: TypeScript--类型声明

类型声明


类型声明是 TS 中非常重要的一个特点,通过类型声明可以指定 TS 中变量(参数、形参)的类型。指定类型后,当为变量赋值时,TS 编译器会自动检查值是否符合类型声明,符合则赋值,不符合则报错。

语法:

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

常用的类型有下面几种:


number、string、boolean


重点:类型的首字母为小写,如 string、number。

string 表示 TypeScript 中的字符串类型

String 表示 JavaScript 的字符串包装类的类型

// 声明一个变量 a,同时指定它的类型为 number
 let a:number;
//  a 的类型设置为了 number,在以后的使用过程中 a 的值只能是数字
a = 10;
a = 33;
// a = 'hello'  此行代码会报错,因为变量 a 的类型是 number,不能赋值字符串
let b:string
b = 'hello'
// b=123  不能赋值为 number
// 声明变量直接进行赋值
let c:boolean = false;
// 如果变量的声明和赋值是同时进行的,TS 可以自动对变量进行类型检测。如下面的自动就是 boolean 类型的
let d = false;
// 可以使用 | 来连接多个类型,这时候 e 只能为 “mail” 或者 “haha”
let e: "mail" | 'haha';
// f 只能为 布尔类型或者 字符串类型
let f: boolean | string;


any、unknown、void、never


// any 表示的是任意类型,一个变量设置为 any 后相当于对该变量关闭了 ts 的类型检测
let a: any  // 下面的几种赋值都是可以的
a = 10
a = 'haha'
a = false
// unknown 表示未知类型的值, unknown 和 any 的区别在于 any 可以赋值给其他变量,unknown 不可以
let b: unknown
b = 10
b = 'haha'
b = false
// a 和 b 的参数类型都是 number,括号外面的是返回值的类型,这里返回值的类型为 string
function sun(a: number,b: number):string{
    return "a" + "b"
}
// void 用来表示空,以函数为例,就表示没有返回值的函数
function fn1():void{
    console.log('hhhh...')
}
// never 表示永远不会返回结果
function fn2():never{
    throw new Error('报错了。。。')
}


object、array、tuple、enum


// object 表示一个 js 对象
let a: object;
a = {}
// {} 用来指定对象中可以包含哪些属性,
// 语法:{属性名: 属性值, 属性名: 属性值}
let b: {name: string}  // b 里只能有一个 name,不能有其他的属性了,有且只能有 name 一个属性
b = {name: '邹邹'}
// 在属性名后面加上?,表示属性是可选的
let c: {name: string, age?:number}
c = {name: "啦啦。。。"}  // age 是可选的
// [propName: string]: any 表示任意类型的属性。propName 随便起的名字,propName: string 表示对象里的 key 的类型为字符串,它的值的类型为 any,
// [propName: string]: any 这样 就可以在对象里写入多个 key
let d: {name: string,[propName: string]: any}
d = {name: "haha", a: 1, b :'嘿嘿嘿', c: true}
// string[] 表示字符串数组
let e: string[]
e = ['a', 'b', 'c']
/* 数组有下面的两种写法 */
// number 表示数值数组
let f: number[]  // 推荐这种写法
f = [1,2,3]
// 下面的这个也表示数值数组
let g: Array<number>  // 不推荐这种写法
g = [4, 5, 6] 
// 元组,就是固定长度的数组
let h: [string, number]
h = ['hello',123] // 只能有两个元素,第一个是字符串,第二个是数字,多了少了都会报错 
// 枚举
// 创建一个枚举
enum Gender{
    Male = 1, // 代表 男
    Female = 0  // 代表 女
}
// 使用枚举类
let i:{ name: string, gender: Gender}
i = {
    name: '张三',
    gender: Gender.Male  // 使用枚举里的性别
}


类型的别名


type myType = 1 | 2 | 3 | 4  // 给 1 | 2 | 3 | 4 起了个别名为 myType
let a: myType // a 的类型为 myType,也就是 a 只能为 1 | 2 | 3 | 4
let b: myType

相关文章
|
2月前
|
JavaScript
typeScript进阶(9)_type类型别名
本文介绍了TypeScript中类型别名的概念和用法。类型别名使用`type`关键字定义,可以为现有类型起一个新的名字,使代码更加清晰易懂。文章通过具体示例展示了如何定义类型别名以及如何在函数中使用类型别名。
40 1
typeScript进阶(9)_type类型别名
|
2月前
|
JavaScript
typeScript基础(2)_any任意值类型和类型推论
本文介绍了TypeScript中的`any`任意值类型,它可以赋值为其他任何类型。同时,文章还解释了TypeScript中的类型推论机制,即在没有明确指定类型时,TypeScript如何根据变量的初始赋值来推断其类型。如果变量初始化时未指定类型,将被推断为`any`类型,从而允许赋予任何类型的值。
56 4
|
1月前
|
JavaScript 前端开发 安全
深入理解TypeScript:增强JavaScript的类型安全性
【10月更文挑战第8天】深入理解TypeScript:增强JavaScript的类型安全性
45 0
|
1月前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧
|
2月前
|
JavaScript
typeScript基础(5)_对象的类型-interfaces接口
本文介绍了TypeScript中接口(interfaces)的基本概念和用法,包括如何定义接口、接口的简单使用、自定义属性、以及如何使用`readonly`关键字定义只读属性。接口在TypeScript中是定义对象形状的重要方式,可以规定对象的必有属性、可选属性、自定义属性和只读属性。
41 1
|
2月前
|
存储 JavaScript
typeScript进阶(11)_元组类型
本文介绍了TypeScript中的元组(Tuple)类型,它是一种特殊的数组类型,可以存储不同类型的元素。文章通过示例展示了如何声明元组类型以及如何给元组赋值。元组类型在定义时需要指定数组中每一项的类型,且在赋值时必须满足这些类型约束。此外,还探讨了如何给元组类型添加额外的元素,这些元素必须符合元组类型中定义的类型联合。
47 0
|
2月前
|
JavaScript
typeScript进阶(10)_字符串字面量类型
本文介绍了TypeScript中的字符串字面量类型,这种类型用来限制变量只能是某些特定的字符串字面量。通过使用`type`关键字声明,可以确保变量的值限定在预定义的字符串字面量集合中。文章通过示例代码展示了如何声明和使用字符串字面量类型,并说明了它在函数默认参数中的应用。
37 0
|
4天前
|
JavaScript 安全 前端开发
TypeScript类型声明:基础与进阶
通过本文的介绍,我们详细探讨了TypeScript的基础与进阶类型声明。从基本数据类型到复杂的泛型和高级类型,TypeScript提供了丰富的工具来确保代码的类型安全和可维护性。掌握这些类型声明能够帮助开发者编写更加健壮和高效的代码,提高开发效率和代码质量。希望本文能为您在使用TypeScript时提供实用的参考和指导。
12 2
|
18天前
|
JavaScript 开发者
在 Babel 插件中使用 TypeScript 类型
【10月更文挑战第23天】可以在 Babel 插件中更有效地使用 TypeScript 类型,提高插件的开发效率和质量,减少潜在的类型错误。同时,也有助于提升代码的可理解性和可维护性,使插件的功能更易于扩展和升级。
|
29天前
|
JavaScript 前端开发
TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第11天】TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!