![902cc8ddb670a292ab73d0f4a759d029.png](https://i-blog.csdnimg.cn/blog_migrate/66fbb42fcf32d31e6f7a2ccbe2fcac1f.jpeg)
背景
wx.canIUse()
是微信小程序中常用的一个API,它的定义和详细说明如下图所示:
![46a0307e76d7e260a73773371d72426c.png](https://i-blog.csdnimg.cn/blog_migrate/8354b74780f204dbc9c3bd4c3658f7d7.jpeg)
通过上面的描述可以看出,如果简单的在runtime找某个函数是否存在,是无法实现这个API的,因为稍微复杂一些的scheme都无法支持,况且这个API还支持查找组件以及组件的属性。
由于我们在快手小程序需要实现同样的API,那么,摆在面前的就有两种方案:
- 手动维护所有API、组件以及对应的各种scheme 这样的方法一定可以达到目的,但是时间成本太高,而且整个过程很容易出错也极其枯燥。
- 根据API的定义生成一份Map,记录每个方法和组件的相关信息。 这种方案看起来更加方便,错误率更低。而要实现这种方案,就需要用的TypeScript官方提供的TypeScript Compiler API。
TypeScript Compiler API
简单来说,TypeScript Compiler API提供了解析t