【发布时间】:2014-10-03 16:52:05
【问题描述】:
我正在尝试静态键入 React 组件的 props。在包含definitions for React 之后,我定义了React.createClass 的类型化变体,命名为component。
interface Component<P> {
(props: P, ...children: any[]): React.ReactComponent<P, any>
}
function component<P, S>(spec: React.ReactComponentSpec<P, S>): Component<P> {
return React.createClass(spec);
}
当我定义一个带有注释的 Label 组件时,它表示它需要一个 text 字符串属性,
var Label: Component<{text: string}> = component({
render: function() {
return React.DOM.div(null, this.props.text);
}
});
var App = React.createClass({
render: function() {
return React.DOM.div(null, Label({text: "Hello"}));
}
});
编译器会检查 Label 是用 text 属性调用的,并且它是一个字符串。
下一步是让编译器检查this.props.text 使用内部 Label 方法。怎么做?
【问题讨论】:
标签: typescript reactjs