小编Ole*_*lik的帖子

TypeScript - 条件模块导入/导出

TypeScripts以"声明"方式抽象出模块导入/导出.

但是,如果我想根据某些运行时计算条件导入或导出某些内容呢?

最常见的用例是在Node.js和Windows Script Host等平台之间共享代码.

TypeScript自己的io.ts在TSC编译器中抽象输入/输出,手动破解内置的TypeScript自己的模块语法.这是唯一的方法吗?

PS将import fs = module("fs")粘贴到if语句中的问题是TypeScript只允许顶层的import语句.这意味着在WSH中需要执行("fs")并且显然会失败,因为需要是未定义的.

typescript

18
推荐指数
3
解决办法
1万
查看次数

React portal:在同一个domNode父级内托管多个?

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

但这是一个实现怪癖,还是设计?

javascript reactjs

14
推荐指数
1
解决办法
1562
查看次数

typescript.js和typescriptServices.js有什么区别?

TypeScript在其"bin"文件夹中附带3个JavaScript编译文件:

  • tsc.js - 命令行运行编译器本身;
  • typescript.js - ??
  • typescriptServices.js - ??

我猜其中一个应该是'TypeScript语言服务',但另一个是什么?

typescript

13
推荐指数
1
解决办法
1302
查看次数

TypeScript语言服务示例

TypeScript附带了源代码,测试和一些示例,编译器显然具有用于AST操作的API以及代码完成和着色等.

但是,我找不到任何有关如何使用该API的示例.有没有人试图理解它?也许有些博主?

我能找到的唯一例子是一些基本的Sublime Text插件.

typescript

12
推荐指数
2
解决办法
2964
查看次数

嵌套通用语法歧义>>

显然,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 >>'解析为算术表达式或泛型类型/方法?

当然,它不会尝试在程序文本上多次"运行",直到它成功,或者它是否成功?这需要无限前瞻,而且非常复杂.

c# lexer nested-generics

10
推荐指数
1
解决办法
667
查看次数

检测Android方向:landscape-Left v.landscape-Right

如何检测手机4个侧面中的哪一个出现.

我可以检测到纵向/横向模式,但是如何从横向打开的右侧告诉横向左转

基本上我想在用户转动手机时制作一个漂亮的过渡动画.你知道,就像在iPhone的Safari中一样:从之前的布局到新的400ms的快速旋转.

android

9
推荐指数
2
解决办法
1万
查看次数

TypeScript - 什么是'导出导入'?

显然,你可以在TypeScript中说'export import xx = module("xx")'.

但是,这是什么意思?我在规范中没有看到.

obsolete typescript

7
推荐指数
1
解决办法
6640
查看次数

在TypeScript中构建一个大型复杂模块

我在TypeScript中创建了一个复杂的模块(解析PE文件结构,类似于Mono.Cecil所做的,但在TS/JS中并不那么复杂).

问题是如何最好地将该功能放在文件/文件夹/模块维度中.

我开始使用类似于C#的结构,每个类都在自己的文件中,名称空间(模块)对应于大量或多或少独立的功能并存在于子文件夹中.

现在在TypeScript中有几个问题.或许这些问题与我的愚蠢有关?

  1. 单独文件中的每个类都有利于开发,但对编译输出没有意义.没有人想携带24个文件而不是一个.
  2. 如果我将所有内容编译成一个文件(tsc -out),则每个单独文件的内容几乎都是独立发送的,即使它们都属于同一个模块.TypeScript使用一些时髦的hacky外观语法构建该模块,而不是我手工编写的内容(将它们全部放在一个模块中 - 定义立即调用的函数).
  3. 我希望我的东西能在Node.js和浏览器中运行.对于Node我需要使用'export module'来加密它,但是对于浏览器来说,典型的用法就是生成whatever.js并让页面进入 - 这意味着我应该关闭'export module'.

处理这个问题的最佳方法是什么?

typescript

6
推荐指数
1
解决办法
1901
查看次数

如何调试 TypeScript 编译器?

有没有一种简单的方法来遍历 TypeScript 编译器 (tsc.js) 并观察它是如何工作的?

typescript

5
推荐指数
1
解决办法
2612
查看次数

TypeScript 中的命名空间关键字

试图找出namespaceTypeScript中关键字的含义?

这是他们最近进行的一些改组以namespace代替使用module

https://github.com/Microsoft/TypeScript/commit/224e7630ea17c4547e97f85634f446b877955a67

在没有命名空间规范的情况下,使语言看起来像 C# 的重命名似乎毫无意义。

或者两者之间有什么微妙的区别?namespacesorta一词意味着使用相同名称的多个声明之间的共享范围/空间。这是正确的直觉吗?

c# namespaces keyword typescript

3
推荐指数
1
解决办法
435
查看次数