如何使用反应定义编译typescript

时间:2014-12-10 11:02:47

标签: typescript reactjs

我正在尝试编写一个使用React.addons.update的打字稿模块。但是,我无法找到一种方法来编译它。

我有一个包含以下文件的文件夹:

我运行以下命令:

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'.

3 个答案:

答案 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文件中的ReactReactDom

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" } });