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

相关文章
|
11月前
|
JavaScript 前端开发
揭秘 TypeScript 条件类型:超越简单类型检查
揭秘 TypeScript 条件类型:超越简单类型检查
|
11月前
|
JavaScript 安全 索引
TypeScript 高级类型工具:Partial, Required, Record 的妙用与陷阱
TypeScript 高级类型工具:Partial, Required, Record 的妙用与陷阱
|
11月前
|
JavaScript 安全 IDE
TypeScript 类型体操:别让 `any` 毁了你的安全网!
TypeScript 类型体操:别让 `any` 毁了你的安全网!
|
存储 安全 JavaScript
TypeScript-内置应用程序类型-Recode
通过使用 `Record` 类型,开发者可以显著提升代码的安全性和可维护性。无论是配置对象、字典结构还是动态表单,`Record` 类型都提供了一个简洁、类型安全的解决方案。
586 82
|
JavaScript 前端开发 安全
深入理解TypeScript:增强JavaScript的类型安全性
【10月更文挑战第8天】深入理解TypeScript:增强JavaScript的类型安全性
503 0
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧
|
11月前
|
JavaScript 安全 编译器
TypeScript 类型守卫:让你的类型系统更智能
TypeScript 类型守卫:让你的类型系统更智能
|
存储 JavaScript
typeScript进阶(11)_元组类型
本文介绍了TypeScript中的元组(Tuple)类型,它是一种特殊的数组类型,可以存储不同类型的元素。文章通过示例展示了如何声明元组类型以及如何给元组赋值。元组类型在定义时需要指定数组中每一项的类型,且在赋值时必须满足这些类型约束。此外,还探讨了如何给元组类型添加额外的元素,这些元素必须符合元组类型中定义的类型联合。
241 0
|
JavaScript 前端开发 安全
使用 TypeScript 加强 React 组件的类型安全
【10月更文挑战第1天】使用 TypeScript 加强 React 组件的类型安全
389 106
|
设计模式 JavaScript 安全
TypeScript性能优化及代码质量提升的重要性、方法与策略,包括合理使用类型注解、减少类型断言、优化模块导入导出、遵循编码规范、加强代码注释等
本文深入探讨了TypeScript性能优化及代码质量提升的重要性、方法与策略,包括合理使用类型注解、减少类型断言、优化模块导入导出、遵循编码规范、加强代码注释等,旨在帮助开发者在保证代码质量的同时,实现高效的性能优化,提升用户体验和项目稳定性。
522 6