# 声明文件 d.ts

全称 TypeScript Declaration File,很多第三方的库并没有提供 ts

# Eslint 配置

roles: {
    // 未定义变量
    'no-undef': 0,
    // 未使用变量
    "no-unused-vars": "off",
    // 未使用变量 ts
    '@typescript-eslint/no-unused-vars': [
      'error',
      { vars: 'all', args: 'after-used', ignoreRestSiblings: true },
    ],
}

# 实例

命名空间、变量等

/**
 * 命名空间
 */
declare namespace ABC {
  interface BBB {
    name: string;
  }
}
/**
 * 全局的变量
 */
declare const NNN: string;

定义模块

/**
 * 一定要引用,否则不会继承
 * 还有最好单独的文件,否则会影响到下面的功能
 */
import "react";

declare module "react" {
  interface IUseCustomerHook {
    props: any;
  }
}

# 分类

  • global 暴露出全局变量
  • module 不暴露全局变量
  • plugin 会影响其他类库功能

# 分类细化

  • global.d.ts:适用于 global 类库
  • module-function.d.ts:适用于暴露出一个 Function 的 module 类库
  • module-class.d.ts:适用于暴露出一个 Class 的 module 类库
  • module.d.ts:适用于一般 module 类库(暴露出的东西既不是 Function 也不是 Class)
  • module-plugin.d.ts:适用于 module plugin 类库(A module plugin changes the shape of another module.)
  • global-plugin.d.ts:适用于 global plugin 类库(A global plugin is global code that changes the shape of some global.)
  • global-modifying-module.d.ts:适用于 module 形式的 global plugin 类库(They’re similar to global plugins, but need a require call to activate their effects.)