Appearance
19.扩展全局变量类型
一.扩展局部变量
可以直接使用接口对已有类型进行扩展
interface String {
double():string
}
String.prototype.double = function () {
return this as string + this;
}
let str = 'zhufeng';
1
2
3
4
5
6
7
2
3
4
5
6
7
interface Window {
mynane:string
}
console.log(window.mynane)
1
2
3
4
2
3
4
二.模块内全局扩展
declare global{
interface String {
double():string;
}
interface Window{
myname:string
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
声明全局表示对全局进行扩展
三.声明合并
同一名称的两个独立声明会被合并成一个单一声明,合并后的声明拥有原先两个声明的特性。
1.同名接口合并
interface Animal {
name:string
}
interface Animal {
age:number
}
let a:Animal = {name:'zf',age:10};
1
2
3
4
5
6
7
2
3
4
5
6
7
2.命名空间的合并
扩展类
class Form {} namespace Form { export const type = 'form' }
1
2
3
4扩展方法
function getName(){} namespace getName { export const type = 'form' }
1
2
3
4扩展枚举类型
enum Seasons { Spring = 'Spring', Summer = 'Summer' } namespace Seasons{ export let Autum = 'Autum'; export let Winter = 'Winter' }
1
2
3
4
5
6
7
8
3.交叉类型合并
import { createStore, Store } from 'redux';
type StoreWithExt = Store & {
ext:string
}
let store:StoreWithExt
1
2
3
4
5
2
3
4
5
四.生成声明文件
配置
tsconfig.json
为true 生成声明文件
"declaration": true
1