模块、命名空间和三斜线指令

模块、命名空间和三斜线指令

“内部模块”现在称做“命名空间”

“外部模块”现在则简称为“模块”

// 导出

// 导出声明  任何声明(比如变量,函数,类,类型别名或接口)都能够通过添加export关键字来导出
export interface StringValidator {
    isAcceptable(s: string): boolean;
}

class ZipCodeValidator implements StringValidator {
    isAcceptable(s: string) {
        return s.length === 5;
    }
}
// 导出语句
export { ZipCodeValidator };
// 别名导出
export { ZipCodeValidator as mainValidator };

// 全部导出
export * from "module"  

// 导入
// 导入一个模块中的某个导出内容
import { ZipCodeValidator } from "./ZipCodeValidator";
// 别名导入
import { ZipCodeValidator as ZCV } from "./ZipCodeValidator";

// 将整个模块导入到一个变量,并通过它来访问模块的导出部分
import * as validator from "./ZipCodeValidator";
let myValidator = new validator.ZipCodeValidator();

// 全部导入
import "./my-module.js";


// 每个模块都可以有一个default导出。 默认导出使用 default关键字标记;并且一个模块只能够有一个default导出。 需要使用一种特殊的导入形式来导入 default导出
// 声明变量使用关键字declare来表示声明其后面的全局变量的类型
declare let $: JQuery;
export default $;
import $ from "JQuery";

// 若使用export =导出一个模块,则必须使用TypeScript的特定语法import module = require("module")来导入此模块
export = ZipCodeValidator;
import zip = require("./ZipCodeValidator");

// 模块声明通配符
declare module "*!text" {
    const content: string;
    export default content;
}
import fileContent from "./xyz.txt!text";


// 命名空间
declare namespace D3 {
    export interface Selectors {
        select: {
            (selector: string): Selection;
            (element: EventTarget): Selection;
        };
    }

    export interface Event {
        x: number;
        y: number;
    }

    export interface Base extends Selectors {
        event: Event;
    }
}

declare var d3: D3.Base;


/// <reference path="..." />指令是三斜线指令中最常见的一种。 它用于声明文件间的 依赖。
// 可以把它理解为单行注释,只不过它比较特殊,它会被当成编译器指令解析使用
// 你也可以把它理解的mport,它可以告诉编译器在编译过程要引入的额外的文件
// 必须出现在首行,否则就为单行注释

// myModules.d.ts
declare module "SomeModule" {
    export function fn(): string;
}
// myOtherModule.ts
/// <reference path="myModules.d.ts" />   // 用于声明文件之间的依赖
/// <reference types="..." />  // 用于声明对某个包的依赖
/// <reference no-default-lib="true" /> //用于将一个文件标记成默认库
/// <amd-module /> // 用于给编译器传人一个可选的模块名
/// <amd-dependency path="x"/> // 告诉编译器有个非ts模块需要注入,不过指令已经使用import “x”语句代替
import * as m from "SomeModule";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值