我已经阅读了很多关于实施的Typescript github问题,但是这方面的文档或人员很少。
我的目标是基本上有打字稿了解...
[1,2,3,4,5].filter(_ % 2).map(_ + 2)
[{name: "test"}, {name: "test2"}].map(_.name).map(_.toUpperCase())
与......相同。
[1,2,3,4,5].filter((x) => x % 2).map((x) => x + 2)
[{name: "test"}, {name: "test2"}].map((x) => x.name).map((x) => x.toUpperCase())
我想要定义一个SweetJS宏来将所有下划线转换为(x)=> x在编译时或(最好)有打字稿为我应用这种转换,因为SweetJS相当hacky。
(供参考https://github.com/sweet-js/sweet-core)
我将如何实现允许typescript至少在正确的上下文\ AND \中理解下划线语法的东西,如果可能的话,在编译时转换下划线。
EDIT3 :(编辑3在这里是为了便于阅读)这是我有多远的问题,我选择不改变编译器认为它是一个不同的类型,而是这样做....
declare const _: (<T>(arg: T) => T) & { [key: string]: () => any }
const test = [{name: "Shanon", age: 24}].filter(_.age);
哪些打字稿现在很满意,但它不是类型安全的,所以任何帮助都会受到赞赏。
编辑:凭借我最小的编译技能,我认为我需要打字稿才能理解当我处于&#34; CallExpression&#34;下划线具有非常独特的含义(AST中的CallExpression)。 EDIT2:
这是我需要输出的AST定义(类似这样的),重要的是要注意,我不想在强调之前转换下划线,但我想控制下划线是如何进行类型检查的。它应该只在CallExpression AST类型