TypeDraft是TypeScript的超集,它为该语言增加了DSL和宏机制。如果TypeScript是可缩放的JavaScript,那么TypeDraft就应该是可缩放的TypeScript。
我们可以通过指定不同的环境变量来构建不同版本的库。例如,在实现DSL时,我们实现了名为“debug”的DSL:
这样就可以达到条件编译的目的。例如,如果您同时具有用于开发和生产的代码:
让url:string=";";;{";use dev";;url=...//地址在测试环境中}{";use Production";;url=...//地址在生产环境中}。
如果我们有如下代码,我们可以用“Match”简化if-Else的逻辑:
Let filtered;let currentFilter=all';filtered=currentFilter=';all';?项目:currentFilter=';已完成';?Items.filter(Item=>;item.Complete):items.filter(Item=>;!item.Complete);
Let filtered;let currentFilter=';all';{";use Match";;(currentFilter:";all";)=>;filtered=Items;(currentFilter:";Completed";)=>;Filtered=items.filter(Item=>;item.Completed);()=>;Filtered=items.filter(Item=>;
我们可以用“Watch”编写直观的代码来实现传统的计数器demo:
导出默认函数App(){let count=0;function handleClick(){count+=1;}let Double:number;{";Use Watch";;Double=count*2;}<;button onclick={handleClick}>;click{count}{count==1?';time';:';Times';}<;/button>;<;p>;/p>;}。
TypeDraft中的宏支持是原始的,但仍然有用。JSX用于定义和使用宏,这一部分参见JSX作为宏。
识字编程中的光线跟踪就是一个很好的例子,因为站点本身是由代码生成的,您可以找到宏和svelte-draft的用法。
导出默认函数节(){let canvas:HTMLCanvasElement;onmount(()=>;{function GenerateColor(ray:ray){<;GenerateColor/>;;};<;RenderImage/>;});let width=600;let Height=300;<;div class=";tainer";>;<;canvas bindRef={canvas}width={width。
然后,将宏RenderImage和GenerateColor的实现放在其他地方,以保持代码结构清晰和易于理解。
有关TypeDraft的更多信息,请参见https://mistlog.github.io/typedraft-docs/docs/.。很抱歉,这篇文章主要是例子和链接驱动的,自然语言太难处理了!