Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 小程序 Arthas JVM AQS juc Kubernetes Docker DevOps


TypeScript 相关知识点

TypeScript 大约 1246 字

安装

npm install -g typescript

编译 ts 文件

tsc在全局安装完typescript后自动会加入到环境变量中。

tsc hello.ts

基本类型

  • boolean
  • number
  • string
  • any
  • void(多用于函数返回值)

修饰符用于构造函数

修饰符可以使用在构造函数参数中,等同于类中定义该属性同时给该属性赋值,使代码更简洁。

class Animal {

  public constructor(public name) {

  }
}

等同于

class Animal {
  public name: string;

  public constructor(public name) {
    this.name = name;
  }

}

联合类型

联合类型使用|分隔每个类型。

这里的let myFavoriteNumber: string | number的含义是:允许myFavoriteNumber的类型是string或者number,但是不能是其他类型。

let myFavoriteNumber: string | number;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;

只能访问此联合类型的所有类型里共有的属性或方法:

访问stringnumber的共有属性是没问题的

function getString(something: string | number): string {
    return something.toString();
}

问号

可选参数

?表示param这个参数是一个可选参数。

function getUser(user: string, param?: string) { }

成员变量

?表示name这个字段有可能不存在。

interface B {
  name?: string
}

class A {
  name?: string
}

安全链式调用

添加?操作符,当stack属性存在时,调用stack.split。若stack不存在,则返回空。

new Error().stack?.split('\n');

等同于

const err = new Error();
return err.stack && err.stack.split('\n');

感叹号

成员变量

接口B里面name被定义为可空的值,但是实际情况是不为空的。

可以通过在class里面使用!,重新强调了name这个不为空值。

interface B {
  name?: string
}

class A implemented B {
  name!: string
}

强制链式调用

字段肯定会出现,那么就可以添加!,强调这个字段一定存在。

new Error().stack!.split('\n');
阅读 148 · 发布于 2022-12-18

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批