一. 介绍
TypeScript 是 JavaScript 的超集,它支持JavaScript中的所有语法,TypeScript代码可以和现有的JavaScript代码结合使用,以及拥有额外的特性,例如静态类型、类、接口、命名空间、泛型等。
二. 常用类型基本概念
- 基础类型
在 TS 中,使用
:指定变量的类型
- String字符串:(使用
string定义字符串类型)
let str: string = 'hello'
- Number数值:(使用
number定义数值类型)
let sum: number = 10;
- Boolean布尔值:(使用
boolean定义布尔类型)
let bool: boolean = true;
- Void 空值:(使用
void来表示没有任何返回值的函数)
function fun: void{
console.log(666)
}
- Any 任意值:(使用
any来设定可以被赋值为任意类型)
注意:变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型
let temp: any = 'hello'
temp = 666
// 正常编译运行
- Null(使用
null)
let n: null = null;
- Undefined(使用
undefined)
let u: undefined = undefined;
- 对象类型
- type
type可以创建具有命名类型的别名
type myString = string
let name: myString = 'xiaowen'
- interface
用于描述类、对象和函数等结构化类型。它允许你命名属性并指定它们的类型。
interface Person {
// 限制 name 必须为 string , age 必须为 number , hobbles 可选 ,有无均可
name:string,
age:number,
hobbles?:array
}
// 使用 Person 接口,规定必须要且只有 name 和 age ,且类型和上面一致
let per: Person = {
name: 'xiaowen',
age: 26
}
定义了一个接口
Person(行为的抽象,事物的本质),Person约束了定义的变量per属性类型必须和接口Person一致
特殊地,还有可读属性:
规定只有在创建时可以赋值,后面无法修改
interface Person {
readonly name:string,
age:number,
hobbles?:array
}
let per: Person = {
name: 'xiaowen',
age: 26
}
per.name = 'xiaoming' // 此行会报错
- 接口 interface
- 断言
三. 进阶用法
- 联合类型
使用 | 来分隔选定的类型 (与 || 逻辑或的作用相似)
例如 number | string 代表变量的类型可以是数值,也可以是字符串类型
注意:当变量作为函数的形参时,未指明变量的类型时,只能访问其联合类型共有的方法和属性
function add(count:number | string){
// length不是 number 和 string 类型所共有的方法
return count.length
// toString 为它们所共有的方法
return count.toString()
}
- 泛型(常用于函数)
语法:
在 <> 内写类型参数,一般用
T来表示(例<T>)类似变量或者说是一个占位符来规定类型 应用场景:
统一函数输出(形参)输入(返回值)的类型统一
// 第一个 T 代表传入的参数可以是任意
// 第二个 T 代表返回的值必须和第一个 T 相同
function fun<T>(a:T):T {
return a
}
如有错误欢迎指正,本文章持续更新中。。。