1. 声明语法列表
// 声明全局变量
declare let variable: number;
declare let jQuery: (selector: string) => any
//声明全局方法
declare function add(lhs: number, rhs: number): number;
//声明全局类
declare class Foo {
name: string;
constructor(name: string);
}
//声明全局枚举类型
declare enum Flag {
ONE, TWO, THREE
}
//声明(含有子属性的)全局对象
declare namespace ACM { }
//接口和类型的全局声明
interface Cat {
name: string;
}
//导出默认变量
export default variable;
//src/JQuery.d.ts
//命名空间
declare namespace JQuery {
interface AjaxSettings {
method?: 'GET' | 'POST';
data?: any;
}
function ajax(url: string, settings?: AjaxSettings): void;
const version: number;
class Event {
blur(eventType: EventType): void;
}
enum EventType {
CustomerClick,
Default
}
}
//使用与调用src/index.ts
import { JQuery } from "./declare";
JQuery.ajax('/api/get/something') ;
console.log(JQuery.version)
const e = new JQuery.Event();
e.blur(JQuery.EventType.CustomerClick);
在编写的格式上:function
、class
、interface
可直接默认导出,其他变量需要先定义在默认导出。
declare enum Directions {
Up,
Down,
Left,
Right
}
export default Directions;
文件导入导出,在commonjs规范总,我们采取以下方法来导出
//整体导出
module.exports = foo ;
//单个导出
exports.bar = bar ;
在TypeScript中有以下方法导入
// 方法一:const ... = require
//整体导入
const foo = require('foo') ;
//单个导入
const bar = require('foo').bar ;
//方法二: import ... from
//整体导入
import * as foo from 'foo' ;
//单个导入
import {bar} from 'foo' ;
//第三种导入方式,也是TypeScript官方推荐的方法 import ... require
//整体导入
import foo = require('foo') ;
//单个导入
import bar = foo.bar ;