5

我想在打字稿中使用material-ui。

/// <reference path="../../../typings/react/react.d.ts"/>
import React = __React;
import * as FlatButton from "material-ui/lib/flat-button";

interface ATCProps{
    clickHandler:__React.MouseEventHandler;
}

export default class AddToCartBtn extends React.Component<ATCProps,any>{
    render(){
        return (
            <FlatButton></FlatButton>  // -> error
        )
    }
}

flat-button.d.ts

declare module "material-ui/lib/flat-button" {
    import ReactElement = __React.ReactElement;
    import Component = __React.Component;
    interface FlatButton extends __React.Component<any,any>{
    }
    export default FlatButton;
}

错误:(15, 14) TS2604:JSX 元素类型“FlatButton”没有任何构造或调用签名。

4

2 回答 2

3

您需要替换interface FlatButtonclass FlatButton. 您导出的模块定义没有任何关联的值。

于 2015-12-01T17:38:37.853 回答
0

第一:请试试这个。

import FlatButton from "material-ui/lib/flat-button";

第二:为什么会这样?

它是默认导出

// fileA: export default module
declare let $: JQuery;
export default $;
// fileB: import module from default module
import $ from "jquery";

如果material-ui/lib/flat-button是“默认导出”,我们应该使用不同的导入形式。

第三:什么时候发生的import * as FlatButton from "XXX"

import * as FlatButton from "XXX" 意味着将整个模块导入单个变量。

// the outcome is an object with a default property
{
  default: FlatButton(props)
}

更多模块:默认导出。

于 2019-06-27T07:20:33.547 回答