2016-07-30 16 views
1

我想写达特代码,将生成的这大致相当于:如何与现有的JS对象互操作?

var disposable = vscode['commands'].registerCommand(
    'extension.sayHello', 
    function() { 
     vscode['window'].showInformationMessage('Hello World!'); 
    } 
); 
context.subscriptions.push(disposable); 

变量vscodecontext是在JavaScript可用全局都正在执行我的DART(其被编译成JS与Dart Dev Compiler一起)。我很高兴context/vscode现在完全是无类型的,但我努力弯曲JS package来输出这样的代码(例如,如果我把@JS()放在存根vscode上,我会得到dart.global.vscode)。

回答

2

您可以使用基本dart:js features

注意context恰好是DART对JavaScript的上下文名称。

var disposable = context['vscode']['commands'].callMethod('registerCommand', [ 
    'extension.sayHello', 
    () { 
     context['vscode']['window'].callMethod('showInformationMessage', ['Hello World!']); 
    }]); 
); 
context['context']['subscriptions'].callMethod('push', [disposable]); 
1

让我把github上的一个快速示例与package:js放在一起。

编辑:OK,在这里你去: https://github.com/matanlurey/js-interop-examples

我花了一对夫妇试图将包:JS语法正确的是(我们可能需要更多的在这里的文档和例子),但我结束了创建一个“假”的视觉工作室代码API(vscode.js),并且很好地进行对话。

如果您希望您的示例在Dartium中运行,请注意您需要用allowInterop包装您的函数。