【发布时间】:2017-08-29 09:15:47
【问题描述】:
我正在尝试使用 Typescript 进行 Hello World React。我写了下面的代码。此代码在我使用方法 1 时有效,但在方法 2 上抛出错误
Method 1 - TypeScriptComponent.tsx
import React from 'react'
import ReactDOM from 'react-dom'
import Button from 'react-bootstrap/lib/Button'
interface TypeScriptComponentProps {
}
function handleClick() {
console.log("Hello World")
}
export const TypeScriptComponent = (props: TypeScriptComponentProps) => <Button onclick={handleClick()} bsClass="glyphicon glyphicon-new-window"></Button>;
此代码有效(handleClick 函数出现了一些意外行为,我可以稍后解决。)
但是这个方法行不通
Method 2 - TypeScriptComponent.tsx
import React from 'react'
import ReactDOM from 'react-dom'
import Button from 'react-bootstrap/lib/Button'
interface TypeScriptComponentProps {
}
function handleClick() {
console.log("Hello World")
}
export default class TypeScriptComponent extends React.Component<TypeScriptComponentProps, {}> {
render() {
return (<Button onclick={handleClick()} bsClass="glyphicon glyphicon-new-window"></Button>)
}
}
方法二报错
[at-loader] ./components/TypeScriptComponent.tsx:43:70 中的错误 TS2339:属性 '_ proto _' 在类型 '() => any' 上不存在。
[at-loader] ./components/TypeScriptComponent.tsx:46:5 中的错误 TS2346:提供的参数与调用目标的任何签名都不匹配。
我不知道这两种方法有什么区别?为什么会出现这些错误??
【问题讨论】:
-
你能告诉使用哪些行是
43和46请。这将有助于确定您的问题。 -
这也是一个问题 @SebastianSebald ,我正在使用带有 webpack 的 Typescript,所以它与行号混淆。我的文件
TypeScriptComponent.tsx看起来与我发布的完全相同。没有 43/46 行
标签: javascript reactjs typescript webpack