TypeScripts以"声明"方式抽象出模块导入/导出.
但是,如果我想根据某些运行时计算条件导入或导出某些内容呢?
最常见的用例是在Node.js和Windows Script Host等平台之间共享代码.
TypeScript自己的io.ts在TSC编译器中抽象输入/输出,手动破解内置的TypeScript自己的模块语法.这是唯一的方法吗?
PS将import fs = module("fs")粘贴到if语句中的问题是TypeScript只允许顶层的import语句.这意味着在WSH中需要执行("fs")并且显然会失败,因为需要是未定义的.
React最近添加了Portal功能,有效地将虚拟DOM的子树翻录并将其放置在物理DOM的其他位置.
render() {
// React does *not* create a new div. It renders the children into `domNode`.
// `domNode` is any valid DOM node, regardless of its location in the DOM.
return ReactDOM.createPortal(
this.props.children,
domNode,
);
}
Run Code Online (Sandbox Code Playgroud)
如果每个门户网站必须独立存在,则不清楚文档domNode
.
注意:截至2017年2月11日的当前实施允许在单个内部托管多个门户domNode
.这是来自React文档的原始CodePlex演示的分支,将两个门户推送到一个父节点:
https://codepen.io/anon/pen/WXYNpE
但这是一个实现怪癖,还是设计?
TypeScript在其"bin"文件夹中附带3个JavaScript编译文件:
我猜其中一个应该是'TypeScript语言服务',但另一个是什么?
TypeScript附带了源代码,测试和一些示例,编译器显然具有用于AST操作的API以及代码完成和着色等.
但是,我找不到任何有关如何使用该API的示例.有没有人试图理解它?也许有些博主?
我能找到的唯一例子是一些基本的Sublime Text插件.
显然,C#和C++一样容易受到'>>'lexer困境的影响.
这个C#代码非常有效,它编译并运行得很好:
var List = new Dummy("List");
var Nullable = new Dummy("Nullable");
var Guid = new Dummy("Guid");
var x = List<Nullable<Guid>> 10;
var y = List<Nullable<Guid>> .Equals(10,20);
Run Code Online (Sandbox Code Playgroud)
您必须为上面的Dummy类重载'<'和'>>'运算符.
但编译器设法猜测在'x'情况下,意思是使用List,Nullable和Guid局部变量.在'y'的情况下,它突然决定将它们视为众所周知的类型的名称.
以下是另一个例子的更详细描述:http: //mihailik.blogspot.co.uk/2012/05/nested-generics-c-can-be-stinky.html
问题是:C#编译器如何将'a <b <c >>'解析为算术表达式或泛型类型/方法?
当然,它不会尝试在程序文本上多次"运行",直到它成功,或者它是否成功?这需要无限前瞻,而且非常复杂.
如何检测手机4个侧面中的哪一个出现.
我可以检测到纵向/横向模式,但是如何从横向打开的右侧告诉横向左转?
基本上我想在用户转动手机时制作一个漂亮的过渡动画.你知道,就像在iPhone的Safari中一样:从之前的布局到新的400ms的快速旋转.
显然,你可以在TypeScript中说'export import xx = module("xx")'.
但是,这是什么意思?我在规范中没有看到.
我在TypeScript中创建了一个复杂的模块(解析PE文件结构,类似于Mono.Cecil所做的,但在TS/JS中并不那么复杂).
问题是如何最好地将该功能放在文件/文件夹/模块维度中.
我开始使用类似于C#的结构,每个类都在自己的文件中,名称空间(模块)对应于大量或多或少独立的功能并存在于子文件夹中.
现在在TypeScript中有几个问题.或许这些问题与我的愚蠢有关?
处理这个问题的最佳方法是什么?
有没有一种简单的方法来遍历 TypeScript 编译器 (tsc.js) 并观察它是如何工作的?
试图找出namespace
TypeScript中关键字的含义?
这是他们最近进行的一些改组以namespace
代替使用module
:
https://github.com/Microsoft/TypeScript/commit/224e7630ea17c4547e97f85634f446b877955a67
在没有命名空间规范的情况下,使语言看起来像 C# 的重命名似乎毫无意义。
或者两者之间有什么微妙的区别?namespace
sorta一词意味着使用相同名称的多个声明之间的共享范围/空间。这是正确的直觉吗?
typescript ×7
c# ×2
android ×1
javascript ×1
keyword ×1
lexer ×1
namespaces ×1
obsolete ×1
reactjs ×1