TypeScript 类型声明
1. 声明全局变量
declare let age: number;
declare function sum(a: string, b: string): void;
declare class Animal { };
declare const enum Seaons{
Spring,
Summer,
Autumn,
Winter
}
declare interface Person {
name:string,
age:number
}
declare const $:(selector:string)=>{
height(num?:number):void
width(num?:number):void
};
$('').height();
declare namespace jQuery {
function ajax(url:string,otpions:object):void;
namespace fn {
function extend(obj:object):void
}
}
jQuery.ajax('/',{});
jQuery.fn.extend({});
2. 类型声明文件
declare const $2:(selector:string)=>{
height(num?:number):void
width(num?:number):void
};
declare namespace jQuery {
function ajax(url:string,otpions:object):void;
namespace fn {
function extend(obj:object):void
}
}
3. 编写第三方声明文件
"moduleResolution": "node",
"baseUrl": "./",
"paths": {
"*": ["types/*"]
},
declare function jQuery(selector: string): HTMLElement;
declare namespace jQuery {
function ajax(url: string): void
}
export = jQuery;
import { EventEmitter } from "zf-events";
var e = new EventEmitter();
e.on('message', function (text) {
console.log(text)
})
e.emit('message', 'hello');
export type Listener = (...args: any[]) => void;
export type Type = string | symbol
export class EventEmitter {
static defaultMaxListeners: number;
emit(type: Type, ...args: any[]): boolean;
addListener(type: Type, listener: Listener): this;
on(type: Type, listener: Listener): this;
once(type: Type, listener: Listener): this;
}
4. 模块导入导出
import $ from 'jquery'
const $ = require('jquery');
import * as $ from 'jquery'
import $ = require('jquery')
npm install @types/jquery -S