3 回答
TA贡献1812条经验 获得超5个赞
javascript中的函数:
/*普通函数*/
function add(x, y) {
console.log(x + y);
}
add(1, 2);
/*匿名函数*/
var addFun = function (x, y) {
console.log(x + y);
};
addFun(2, 3);
10
在TypeScript中,我们可以给函数指定类型,这样在编译阶段会规避很多错误.函数类型分为参数类型和返回值类型,如下代码所示,参数类型直接在参数后指定,返回值类型则在该函数后面指定。 TypeScript能够根据返回语句自动推断出返回值类型,因此我们通常省略它。
TA贡献1864条经验 获得超6个赞
TypeScript 有两种模块化方式,一种是使用 ES6 的 import/export 及其 TS 对这种语法的微小扩展;另一种方式是使用 TS 特有的 namespace (命名空间)。在分析这两种模块化方式之前,我先推荐使用第一种方式,因为第二种方式涉及到模块引用顺序的问题(可以通过 /// <reference path="..." /> 来解决,但感觉不如 import 爽。
如果使用 namespace 方式的模块化,那么所有东西都是全局的,内部引用直接使用即可,TS 能识别出同一命名空间下export 的内容;外部引用导入即可;全局使用(比如在页面上的 <script> 内,把命名空间写完整就好(仅仍然只能使用export 的内容。
如果使用 ES6 模块方式的模块化,目前最好的方式可能就是挂到 window 上了,如果是在 Node 下,就需要挂到 global上。如果要兼容,就得写点代码来判断全局对象。一般来说,用 TypeScript 写代码,就已经决定了要模块化,除非很少的时候需要在页面的 <script> 中调用脚本中的某些对象,这种情况往 window 上挂就行。如果是要做为库来发布,tsc 是可以编译生成 .d.ts 文件的,如果是引用 js,那就不存在静态类型检查的问题;如果是引用 ts,那就以模块化的方式引用;如果想以全局的方式引用 ts,那就在在全局对象上挂一个入口对象,然后在文档里说明,使用前自己申明这个对象(不需要提供 .d.ts),也就几行代码的事情,也不算麻烦。比如
declare global {
interface Window {
myEntry: EntryClass;
}
}
添加回答
举报