typescript
基础类型
Boolean
number
string
null
undefined
any
void
never
object type
- object{} 对象类型
let obj33:{name:string,age:number}={
name:'11',
age:11
}
*array[] 数组类型
const list: number[] = [12, 23, 34]
//泛型
const listA: Array<number> = [1, 2, 3]
- class 类型
class Person {}
const LinYY: Person = new Person()
- TS中类的继承和定义和JS基本一致
** 同样也能重写父类的属性
** 子类中有构造器 必须调用super() - TS中的静态属性,取值函数getter和存值函数setter,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。
** Getter
class Person{
constructor(private _name:string){}
get name(){
return this._name;
}
set name(rename:string){
this._name=rename
}
}
** 定义get的属性表面上是一个函数,在调用是不需要加上() 这是get的写法
** 访问类中的私有属性可以通过get属性,写入一个‘方法’返回私有属性
- fn() 类型
const getNumber: () => number = () => {
// return 'LinYY' 报错
return 123
}
// 要求返回值是string 字符类型
const getString: () => string = () => {
return 'LinYY'
// return 123
}
interface 自定义类型
//interface
interface Point {
x: number,
y: string
}
const point: Point ={
x:123,
y:'123'
}
- interface之间可以互相嵌套
interface A{
name:string,
age:number
}
interface B{
person:A
}
- interface和type alias
type 使用交叉类型& 俩者之间可以互相继承,但是interface使用更加广阔,能用interface不用type
type alias 类型别名 不是ts的基本数据类型,常用于提取公共类型
type User = { name: string, age: number }
let male: User = {name: 'LinYY', age: 18}
let famale: User = {name: 'nana', age: 18}
数组和元组
数组的类型注解
- 类型[] Array<类型>
//对象数组
const objarr:{name:string,age:number}[]=[{
name:'123',
age:12
}
- 对于复杂的对象数组,可以采用类型别名type alias
元组 tuple 一种特殊的数组
- 每个元素都有固定的类型并且有数目限定
typescript断言
类型断言
- ‘尖括号’语法
let someValue:any = 'this is a string';
let str22:number=(<string>someValue).length;
// as 语法
let str33:number=(someValue as string).length;
非空断言
- 在上下文中当类型检查器无法断定类型时,一个新的后缀表达式操作符!可以用于断言操作对象是非null和非undefined类型。
- 即将x从类型null和undefined中排除
忽略undefined和null类型
function my(mystr: string | undefined | null) {
// const str:string=mystr;
const str2:string=mystr!;
}
调用函数时忽略undefined
type Num=()=>number;
function fn(num:Num|null){
const num1=num();//error
const num2=num!();
}
确定赋值断言
类型守卫
联合类型
- 联合守通常与null和undefined一起用
TS中的this TS是JS的超集 this指向相同
泛型
- 泛指的类型不具体针对某一特定的类型
-
//泛型
function foo<T>(a: any,b: any,c: any){
return a||b||c;
}
function id<T>(a:T,b:T,c:T){
return a||b||c
}
interface Type{
a:number,
b:number,
c:number
}
let t:Type={a:2,b:2,c:2};
foo(1,2,'2');
id(1,2,3);
//接口泛型
interface Uni<T>{
a:T,
b:T,
c:T
}
本文作者:Goodnighter
本文链接:https://www.cnblogs.com/Goodnighter/p/16673522.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步