常见 JavaScript 类型

  1. onst isGood: boolean = true
  2. const num: number = 3
  3. const str: string = 'str'
  4. const arr: number[] = [1, 2, 3]
  5. const strArr: string[] = ['a', 'b']
  6. const obj: {name: string} = {name: 'Joel'}
  7. const notCertainObj: {[key: string]: any} = {name: 'Joel', age: 27}
  8. const obj2: Record<string, any> = {name: 'Joel', age: 27}
  9. const nul: null = null
  10. const und: undefined = undefined
  11. let anyVal: any = 3
  12. onst timeId: NodeJS.Timer = setInterval(fn, 1000)
  13. clearInterval(Number(timeId)) // 不转会报错。
  14. Promise<T> // Promise

DOM 相关类型

元素

  1. const el:HTMLElement = document.querySelector('.el')
  2. const divEl:HTMLDivElement = document.querySelector('div')
  3. const inputEl:HTMLInputElement = document.querySelector('input')

事件

  1. onClick = (event: Event) => {...}

CSS

  1. CSSStyleDeclaration

React 相关类型

  1. JSX.Element // 元素
  2. React.ComponentType // 组件类型
  3. React.RefObject<HTMLDivElement> // ref
  4. // 样式
  5. React.CSSProperties
  6. // 事件
  7. React.SyntheticEvent<EventTarget> // 事件
  8. React.ChangeEvent<HTMLInputElement> // change事件
  9. React.KeyboardEvent<HTMLInputElement> // 键盘事件
  10. React.MouseEvent<HTMLElement> // 鼠标事件
  11. React.UIEvent<HTMLElement> // 滚动事件

React TypeScript Cheatsheets

给 js 加类型

文件名: xxx.d.ts。例如:

  1. import React from 'react';
  2. declare class X extends React.Component<any> {}
  3. export default X;

第三方库 相关类型

  1. moment.Moment

枚举

  1. enum week {
  2. monday,
  3. tuesday,
  4. wednesday,
  5. thursday,
  6. friday,
  7. saturday,
  8. sunday = 0,
  9. }
  10. enum payType {
  11. wechat = '微信支付',
  12. ali = '支付宝'
  13. }

interface

  1. interface Label {
  2. name: string
  3. size: 'sm' | 'md' | 'lg'
  4. des?: () => string
  5. }
  6. interface NeedPayLabel extends Label {
  7. price: number
  8. }

type

  1. type BtnSize = 'sm' | 'md' | 'lg'
  2. type Tree<T> = {
  3. value: T
  4. left: Tree<T>
  5. right: Tree<T>
  6. }

传入不被用到的函数参数

  1. doSth(_:any, 'aaa') // _:any。 传 undefined, void 等都不行。

工具泛型

Partial

将传入的属性变为可选项。

Omit

将传入的属性中剔除某些属性。如

  1. Omit<{
  2. name: string,
  3. age: number,
  4. des: string
  5. }, 'name' | 'age'> // -> { des: string }

Pick

将传入的属性中选择某些属性。

Readonly

将传入的属性变为只读选项。

忽略 Lint

  1. // @ts-ignore
  2. // tslint:disable-next-line
  3. // tslint:disable-line
  4. /* tslint:disable */ // 这行代码以下的不 Lint
  5. /* tslint:enable */ // 这行代码以下的 Lint