在一个d.ts申明文件中.
- 假设有jquery库
declare namespace $ {
}
declare const $;
这两种申明方式是否完全等价? 假如不是,分别应用在什么场景?
- 假设一个方法有静态属性,并且静态属性还有二级属性,该怎么表达?
namespace $ {
namespace fn {
extend: () => void
}
}
declare namespace $ {
let fn: {
extend: () => void
}
}
$.fn.extend()
该例子中,使用那种方式更合理呢? 二者的区别在哪里?
- 把interface 放在namespace 中仅仅是为了模块化避免命名冲突吗?
declare namespace $ {
interface Fn {
extend:() => void
}
let fn:Fn;
}
let $2:$.Fn; // 通过对象的方式来调用
// 单独把interface拿出来模块化起来
// 但是全局多了一个JqueryStatic定义,我又不想暴露这个, 怎么办????
declare namespace JqueryStatic {
interface Fn {
extend:() => void
}
}
// 希望专门放api
declare namespace $ {
let fn: JqueryStatic.Fn;
get(ul: string);
}
以上单独模块化了interface Fn, 但是多了一个全局的 JqueryStatic, 该如何处理?
1/2
namespace 是ts 在没有es6 之前提供的一种模块化方案,虽然说很多老的库还有它的存在,但是现在已经不推荐了。
3