Skip to content
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待

模块:函数

例如,当你想要处理看起来像这样的 JavaScript 代码时:

ts
import greeter from "super-greeter";

greeter(2);
greeter("Hello world");

要处理通过 UMD 和模块的导入:

ts
// Type definitions for [~THE LIBRARY NAME~] [~OPTIONAL VERSION NUMBER~]
// Project: [~THE PROJECT NAME~]
// Definitions by: [~YOUR NAME~] <[~A URL FOR YOU~]>

/*~ 这是函数模块的模块模板文件。
 *~ 你应该将其重命名为 index.d.ts,并放在与模块同名的文件夹中。
 *~ 例如,如果你正在为 "super-greeter" 编写文件,此
 *~ 文件应为 'super-greeter/index.d.ts'
 */

// 注意,ES6 模块不能直接导出类对象。
// 此文件应使用 CommonJS 风格导入:
//   import x = require('[~THE MODULE~]');
//
// 或者,如果启用了 --allowSyntheticDefaultImports 或
// --esModuleInterop,此文件也可以作为默认导入导入:
//   import x from '[~THE MODULE~]';
//
// 请参考 TypeScript 文档
// https://www.typescriptlang.org/docs/handbook/modules.html#export--and-import--require
// 以了解针对 ES6 模块此限制的常见解决方法。

/*~ 如果此模块是一个 UMD 模块,在非模块加载器环境中加载时
 *~ 会暴露一个全局变量 'myFuncLib',请在此处声明该全局变量。
 *~ 否则,删除此声明。
 */
export as namespace myFuncLib;

/*~ 此声明指定函数
 *~ 是从文件导出的对象
 */
export = Greeter;

/*~ 此示例展示了如何为函数提供多个重载 */
declare function Greeter(name: string): Greeter.NamedReturnType;
declare function Greeter(length: number): Greeter.LengthReturnType;

/*~ 如果你也想从模块中暴露类型,你可以
 *~ 将它们放在此块中。通常你会想要描述
 *~ 函数返回类型的形状;该类型应
 *~ 在此处声明,如此示例所示。
 *~
 *~ 注意,如果你决定包含此命名空间,则模块可能被
 *~ 错误地导入为命名空间对象,除非
 *~ --esModuleInterop 已打开:
 *~   import * as x from '[~THE MODULE~]'; // 错误!不要这样做!
 */
declare namespace Greeter {
  export interface LengthReturnType {
    width: number;
    height: number;
  }
  export interface NamedReturnType {
    firstName: string;
    lastName: string;
  }

  /*~ 如果模块也有属性,请在此处声明它们。例如,
   *~ 此声明表明以下代码是合法的:
   *~   import f = require('super-greeter');
   *~   console.log(f.defaultName);
   */
  export const defaultName: string;
  export let defaultLength: number;
}