2017-08-27 33 views
0

material-ui v1.x betaのtypescriptを使用してReactJSスタータープロジェクトを作成しています。 https://material-ui-1dab0.firebaseapp.com/customization/themes/ は動作しません:typescriptを使用しているときに 'theme'プロパティが存在しません

テーマとしてはで説明しました。 Typescriptは存在しないプロパティ 'テーマ'について不平を言う。 @ types/material-uiのindex.d.tsを参考にして、 'muiTheme'インターフェースを 'theme'に置き換えました。この結果、他の多くのエラーが発生します。

代わりに 'muiTheme'プロパティを使用すると、エラーはなくなりますが、カスタムテーマがまったく使用されていないことを示すデフォルトの色のみが使用されます。

マイコード:

import * as React from 'react'; 
import { MuiThemeProvider } from 'material-ui/styles'; 
import createMuiTheme from 'material-ui/styles/theme'; 
import createPalette from 'material-ui/styles/palette'; 
import { teal, bluegrey, red } from 'material-ui/colors'; 
import Button from 'material-ui/Button'; 

const theme: any = createMuiTheme({ 
    palette: createPalette({ 
    primary: teal, // Purple and green play nicely together. 
    accent: { 
     ...bluegrey, 
     A400: '#00e677', 
    }, 
    error: red, 
    }), 
}); 

function Palette() { 
    return (
    <MuiThemeProvider theme={theme}> 
     <div> 
     <Button color="primary"> 
      {'Primary'} 
     </Button> 
     <Button color="accent"> 
      {'Accent'} 
     </Button> 
     </div> 
    </MuiThemeProvider> 
); 
} 

活字体:

(21,23): error TS2339: Property 'theme' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<MuiThemeProvider> & Readonly<{ children?: ReactNod...'. 

答えて

1

material-ui V1を使用している場合、@ typesを使用しない場合は、パッケージとともに出荷されます。あなたのtsconfigファイルに"types": "material-ui"というファイルを指定し、"typeRoots"セクションにnode_modulesと入力してください。当然の

"compilerOptions": { 
    "typeRoots": [ 
     "node_modules/@types", 
     "node_modules" 
    ], 
    "types": [ 
     "node", "jest", "lodash", "react", 
     "react-dom", "react-redux", "redux-logger", "material-ui", 
     "react-router-dom", "react-router-redux", 
     "redux", "binary-type-tree", "redux-form", 
     "tedb", "react-tap-event-plugin", 
     "react-hot-loader", "material-ui-icons" 
    ], 
    "outDir": "dist" 
}, 
"include": [ 
    "src", 
    "node_modules/**/*.d.ts", 
    "node_modules/@types/**/*.d.ts" 
], 

このプロジェクトを変更します、このプロジェクトは、ほぼ完全な書き直しを持っていたと私はV1を使用するために私のプロジェクトを手直ししなければなりませんでした。

+0

どこが間違っているかを確認してください。しかし、Material-UI Webサイトの例に従って最初から始めました。 mjwrazorが述べたように、material-uiの@typesのインストールはもう必要ありません。 –

+0

あなたは私の人生を救っています!私はプロジェクトの始めから重複したタイプに苦労していました。 '@ types'を削除すると、コンパイルとエディタの問題が解決されます。乾杯! – SirWojtek

0

<MuiThemeProvider theme={theme}>

muiのための型定義が間違った日付/外です。 muiがTypeScriptで書かれていれば、これは問題ではありません。

もっと

変更して、ここで修正を提供:PRとしてhttps://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/material-ui/index.d.tsを。

が好ましいTypeScriptの最初のパッケージ

彼らはそのような問題に苦しんでいないので、青写真。 More:https://basarat.gitbooks.io/typescript/content/docs/quick/nodejs.html

関連する問題