实际上,您可以像在Facebook的示例中那样在Typescript中使用ReactJS的组件。只需将“ jsx”文件的扩展名替换为“ tsx”:
//helloMessage.tsx: var HelloMessage = React.createClass({ render: function() { return <div>Hello {this.props.name}</div>; } }); ReactDOM.render(<HelloMessage name="John" />, mountNode);
但是为了充分利用Typescript的主要功能(静态类型检查),应该做几件事:
1)将React.createClass示例转换为ES6类:
//helloMessage.tsx: class HelloMessage extendsReact.Component{ render() { return <div>Hello {this.props.name}</div>; } } ReactDOM.render(<HelloMessage name="John" />, mountNode);
2)接下来添加Props和State接口:
interface IHelloMessageProps { name:string; } interface IHelloMessageState { //在我们的情况下是空的 } class HelloMessage extends React.Component<IHelloMessageProps, IHelloMessageState> { constructor(){ super(); } render() { return <div>Hello {this.props.name}</div>; } } ReactDOM.render(<HelloMessage name="Sebastian" />, mountNode);
如果程序员忘记传递道具,现在Typescript将显示错误。或者,如果他们添加了接口中未定义的道具。
我正在用TypeScript编写一个React高阶组件(HOC)。HOC应该比包装组件多接受一个道具,所以我写了以下内容: 换句话说,是一个生成实际hoc的函数。这个HOC(我相信)是一个接受
问题内容: 我正在第一个NPM模块上工作。之前,我曾短暂地使用过Typescript,但一个大问题是,对于许多模块,没有可用的定义文件。因此,我认为用打字稿编写模块是一个好主意。 但是,我找不到有关最佳方法的任何信息。我发现了一个相关的问题“ 我可以在coffeescript中编写npm软件包吗? ”,那里的人们建议只发布javascript文件。但是与coffeescript文件相比,如果在打字
问题内容: 设置:我有一个用TypeScript编写的Node项目(纯Node,没有浏览器位)。我可以使用模块中的TypeScript编译器()来编译代码。到目前为止,一切都很好。 但是,我想使用Mocha编写测试,这就是我遇到的麻烦。我尝试了,但是不断出现以下错误: 看起来命令行最终被传递给,这显然不好。 问题答案: 对于任何尝试过 typescript-require 并遇到问题的人,您都可以
问题内容: 我对React.js还是很陌生,但是在探索它时,我期望我做不到的事情。 说我有一个组成部分: 这是将其添加到DOM的唯一方法吗? 我希望在定义组件之后能够直接在HTML中执行类似的操作: 我想念什么吗?谢谢 问题答案: 不,使用是“唯一的方法”。 您可能会期望像Webcomponents这样的东西,您可以在其中定义自定义元素并将其放入HTML中,但这不是React的工作方式(也许)。
我在玩TypeScript中的条件类型。我想用条件返回类型编写一个函数。如果函数被传递一个字符串,它将返回一个名称,否则它将返回一个Id。 我在返回语句中得到以下错误: 我错过了什么?Thnx! 编辑:直接摘自Anders Hejlsberg在Build 2018上的演讲:https://youtu.be/hDACN-BGvI8?t=2241 他甚至说“我们不再需要写函数重载了…” 如果我将代码更
我是ReactJS的新手,我在ES2015的基础上学习它。大多数例子是ES5。我的问题似乎是渲染子组件。 我的子组件是一个文本字段 我的父组件称为AddressBox,将包含许多子控件。如果displayMode为true,则它应该呈现一个范围,如果为false,则它应该呈现一个表单控件。 地址框代码为: 当我尝试渲染这些控件时,会出现以下错误: 警告:作出反应。createElement:类型不