我正在尝试编写一个使用React.addons.update
的打字稿模块。但是,我无法找到一种方法来编译它。
我有一个包含以下文件的文件夹:
test.ts包含:
/// <reference path="react.d.ts"/>
React.addons.update({}, {test : {$set : "foo" }});
我运行以下命令:
node <pathtotsc>\tsc -v
=> message TS6029: Version 1.3.0.0
node <pathtotsc>\tsc react.d.ts test.ts
=> test.ts(2,1): error TS2304: Cannot find name 'React'.
我缺少什么?如何正确引用反应定义?
修改
node <pathtotsc>\tsc test.ts
test.ts(2,1): error TS2304: Cannot find name 'React'.
答案 0 :(得分:3)
可以找到相关信息here。诀窍是&#34;反向&#34;理解如何使用定义文件的解释。
在这种情况下,react.d.ts应该像这样使用:
/// <reference path="react.d.ts"/>
import React = require("react/addons");
React.addons.update({}, {$set : "foo" });
可悲的是,这需要tsc的模块编译标志,我不想使用它(我想要静态编译)。解决方案是使用模块,或者在定义文件的末尾添加一行:
declare var React : AddonsExports
这很有效,但遗憾的是update
的接口声明不正确,所以即使进行了这项修改,也无法使用它。
答案 1 :(得分:1)
截至2016年1月14日,使用React 0.14.3和Typescript 1.6.2,以下d.ts导入最终使得Typescript识别ts文件中的React
和ReactDom
。
tsd install react-global --save
tsd update --save --overwrite
我原本必须使用旧教程。它说我只需要react.d.ts
文件。但从那时起,似乎较新版本的React需要更多的定义文件。
安装react-global
将所有这些文件添加到我的tsd.d.ts:
/// <reference path="react/react-dom.d.ts" />
/// <reference path="react/react-addons-create-fragment.d.ts" />
/// <reference path="react/react-addons-css-transition-group.d.ts" />
/// <reference path="react/react-addons-linked-state-mixin.d.ts" />
/// <reference path="react/react-addons-perf.d.ts" />
/// <reference path="react/react-addons-pure-render-mixin.d.ts" />
/// <reference path="react/react-addons-test-utils.d.ts" />
/// <reference path="react/react-addons-transition-group.d.ts" />
/// <reference path="react/react-addons-update.d.ts" />
/// <reference path="react/react-global.d.ts" />
答案 2 :(得分:0)
或者,您可以使用react-addons.d.ts
文件(可在NuGet上获得或通过绝对键入)。
/// <reference path="scripts/typings/react-addons/react-addons.d.ts" />
React.addons.update({}, { test: { $set: "foo" } });