TypeScript的类型声明和静态类型检查注意事项

注意: 使用小写的数据类型(ts官方推荐),定义类型的时候: 后最好加个空格(不加也能执行但不规范)

js中基本类型数据的类型声明

  • 使用变量: 数据类型声明数据类型,如let str: string,可以先声明后赋值和使用
ts 复制代码
let str: string = '321'
let number: number = 321
let flag: booleanv
flag = true

静态类型检查注意事项

  • 无法将 【不同类型】 的变量或常量赋值给对方:str = 321 不能将类型"number"分配给类型"string"
  • 无法和函数一样 【执行方法】str() 此表达式不可调用

js中引用数据类型的类型声明

函数

  • (x: number) (内)接受的参数 进行类型声明,在(): string ()后返回值进行类型声明
  • fucntion count(x: number, y: number): number{}let fun1 = (x: number, y: number): number => {}函数可以对接受的参数返回值进行类型声明
ts 复制代码
function count(x: number, y: number): string{
    return x + '' + y;
}
let fun1 = (x: number): number => {
    return 123 + x;
}

静态类型检查注意事项

  • 函数调用时候的 【实参类型】 要和定义时候的类型一样
  • 函数调用时候的 【实参个数】 要和定义的时候数量一样,注意: 多了少了都不行
  • 函数体内return的返回值要和 【返回值类型】 定义的返回值类型一样
ts 复制代码
// 【实参类型】不对
let fun1 = (x: number, y: number): number => {return x + y}
fun1(123,'321') // 报错:类型"string"的参数不能赋给类型"number"的参数
// 【实参个数】不对(多了少了都不行)
let fun2 = (x: number, y: number, z: number) => {return x + y + z}
fun2(123,321) // 报错:应有 3 个参数,但获得 2 个,未提供 "z" 的自变量
fun2(123,321,1234,4321) // 报错:应有 3 个参数,但获得 4 个。
// 【返回值类型】不对
function count(x: number, y: number): number{
    return x + y + ''; // 报错:不能将类型"string"分配给类型"number"
}

字面量类型声明和类型推断

后续会有文章单独详解字面量类型

  • let str: 'hello' :后面直接给变量一个写死的值,可以是任何数据类型

静态类型检查注意事项

  • 字面量类型声明的变量无法赋值除了 【定义值】 之外的任何值:str = '321' 不能将类型""321""分配给类型""hellow""

类型推断

  • let t: 99使用字面量声明时ts会自动推断对应的数据类型,此处为number

注意:any类型的变量可以赋值给任意类型

  • any类型的变量可以赋值给任意类型,不管any类型的变量后来被赋值成任意数据类型都不会报错
ts 复制代码
let str: string
let num: number
let hello: 'hello'
let x: any
x = true
str = x
num = x
hello = x
相关推荐
一勺菠萝丶1 分钟前
管理后台使用手册在线预览与首次登录引导弹窗实现
java·前端·数据库
军军君011 分钟前
Three.js基础功能学习十四:智能黑板实现实例一
前端·javascript·css·typescript·前端框架·threejs·智能黑板
小村儿4 分钟前
连载05-Claude Skill 不是抄模板:真正管用的 Skill,都是从实战里提炼出来的
前端·后端·ai编程
xiaotao13110 分钟前
JS new 操作符完整执行过程
开发语言·前端·javascript·原型模式
robch16 分钟前
python3 -m http.server 8001直接启动web服务类似 nginx
前端·nginx·http
吴声子夜歌23 分钟前
ES6——数组的扩展详解
前端·javascript·es6
光电大美美-见合八方中国芯27 分钟前
用于无色波分复用光网络的 10.7 Gb/s 反射式电吸收调制器与半导体光放大器单片集成
网络·后端·ai·云计算·wpf·信息与通信·模块测试
guhy fighting32 分钟前
new Map,Array.from,Object.entries的作用以及使用方法
开发语言·前端·javascript
大漠_w3cpluscom32 分钟前
CSS 技巧:CSS 单位使用指南
前端
STATICHIT静砸43 分钟前
了解Monorepo结构
前端