typescript怎么定义全局的函数?

查看:1805
本文介绍了typescript怎么定义全局的函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

出现的问题

想在所有ts/tsx中引用一个辅助函数。(使用import太麻烦而且使用频率很高)。

解决方案(解决不完整)

  • 使用webpack

webpack倒是可以利用resolve创建全局变量引用,但是利用这种黑科技也不能算解决问题吧?

  • 挂载window

看到whatwg-fetch的源码和@types/whatwg-fetch是使用的这种方案,但是我为了这种使用方式要去发布一个npm包,还要去写一个d.ts文件么?(有点扯淡)

  • global.d.ts

看到typescript中有global.d.ts,但是官方给出的例子都是对全局对象/方法的类型抽象。
例如:

declare namespace myLib {
    function encodechar(data: any, opts?:any)
}

myLib的确作为了全局,但是实现的方法在哪实现?

刚开始接触typescript,基本属于小白,求不吐槽-。-

谢谢回答~

补充

2017.2.20 add

最近研究了一下typescript总算是有些深刻的理解。毕竟是个强语言类型检测。对于上文中如何实现global.d.ts做出解答。

global.d.ts是对ts文件的一个类型或者说全局的检测。在tsconfig可以设置文件检测范围。

当然即使在ts文件中实现你需要的方法(例如:encodechar),其实也没用。

只是你的IDE检测到有这么个全局方法的是现实,因此IDE不会报错。但是如果妄想让typescript转成js的时候帮你再引入这个全局方法,你就想多了!运行时会报is not defined

如果解决这个问题的话请参照之前写的前两条webpack(Resolve alias)、挂载window(挂载到全局就不怕找不到了-。-)

解决方案

最近研究了一下typescript总算是有些深刻的理解。毕竟是个强语言类型检测。对于上文中如何实现global.d.ts做出解答。

global.d.ts是对ts文件的一个类型或者说全局的检测。在tsconfig可以设置文件检测范围。

当然即使在ts文件中实现你需要的方法(例如:encodechar),其实也没用。

只是你的IDE检测到有这么个全局方法的是现实,因此IDE不会报错。但是如果妄想让typescript转成js的时候帮你再引入这个全局方法,你就想多了!运行时会报is not defined!

如果解决这个问题的话请参照之前写的前两条webpack(Resolve alias)、挂载window(挂载到全局就不怕找不到了-。-)

这篇关于typescript怎么定义全局的函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆