Why the moon looks so sad?|

Goodnighter

园龄:2年6个月粉丝:0关注:1

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 中国大陆许可协议进行许可。

posted @   Goodnighter  阅读(24)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.

作曲 : Reol

作词 : Reol

fade away...do over again...

fade away...do over again...

歌い始めの一文字目 いつも迷ってる

歌い始めの一文字目 いつも迷ってる

どうせとりとめのないことだけど

伝わらなきゃもっと意味がない

どうしたってこんなに複雑なのに

どうしたってこんなに複雑なのに

噛み砕いてやらなきゃ伝わらない

ほら結局歌詞なんかどうだっていい

僕の音楽なんかこの世になくたっていいんだよ

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.

目の前 広がる現実世界がまた歪んだ

目の前 広がる現実世界がまた歪んだ

何度リセットしても

僕は僕以外の誰かには生まれ変われない

「そんなの知ってるよ」

気になるあの子の噂話も

シニカル標的は次の速報

麻痺しちゃってるこっからエスケープ

麻痺しちゃってるこっからエスケープ

遠く遠くまで行けるよ

安定なんてない 不安定な世界

安定なんてない 不安定な世界

安定なんてない きっと明日には忘れるよ

fade away...do over again...

fade away...do over again...

そうだ世界はどこかがいつも嘘くさい

そうだ世界はどこかがいつも嘘くさい

綺麗事だけじゃ大事な人たちすら守れない

くだらない 僕らみんなどこか狂ってるみたい

本当のことなんか全部神様も知らない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示