2017-09-30 200 views
0

スタックリアクトに私がNodeJsを自分自身を教えゆっくり午前、Expressは、monogoDBと活字体は...私の非常に単純なHello Worldプログラムはちょうどと通信する必要があるTypescriptプロパティ ''がタイプ 'never'に存在しません。 NodeJsが

(MVC C#SQL DBの背景から来る)と反応Expressサーバーを使用してユーザーのリストを表示します。私エクスプレスサーバは、ポート3001上にあり、私の反応するの作成アプリのフロントエンドは、ポート3000上で

次のように私のアプリのコンポーネントは次のとおりです。

import * as React from 'react'; 
import './App.css'; 

const logo = require('./logo.svg'); 

class App extends React.Component { 
    state = {users: []} 
    componentDidMount(){ 
    console.log("Fetching Users"); 
    fetch('/users') 
     .then(res=> res.json()) 
     .then(users=> this.setState({users})); 
    } 
    render() { 
    return (
     <div className="App"> 
     <div className="App-header"> 
      <img src={logo} className="App-logo" alt="logo" /> 
      <h2>Welcome to React test</h2> 
      {this.state.users.map(user => 
      <div key={user.id}>{user.username}</div> 
     )} 
     </div> 
     <p className="App-intro"> 
      To get started, edit <code>src/App.tsx</code> and save to reload. 
     </p> 
     </div> 
    ); 
    } 
} 

export default App; 

エラー:

(21,28): error TS2339: Property 'id' does not exist on type 'never'.

I問題は私がプロパティusers.idとusers.usernameを含むように定義されたユーザーをhaventしていないことを見ることができます..しかし、私はこれを行う方法がわかりません?

+0

* "JavaScriptはここに問題がありません...." * - 入力しない場合は* JavaScript *を使用します。実際にTSを使用したい場合は、http://www.typescriptlang.org/docs/home.htmlを参照してください。 – jonrsharpe

+0

コメントをいただきありがとうございます。私は入力したいと思います。新しい方法を学びたいと思います。私はちょうどそれがこの状況でどのように動作するのか分かりません。インターフェイスを作成する必要はありますか? (私はこれを試してみましたが)明らかに構文が間違っています。私はその行を削除します。 "古い方法が良い"という意味ではありませんでした。 – michael

+0

'state.users'が* of *の配列になっているとコンパイラに伝える必要があります。必ずしもインターフェースを作成する必要はありませんが、記述しているシェイプに便利な名前を付けることができます。 – jonrsharpe

答えて

0

私はこの質問を少し速く投稿しているかもしれません。 私は

(配列オブジェクトのためのインタフェースを作成する)
import * as React from 'react'; 
import './App.css'; 

const logo = require('./logo.svg'); 

interface Iuser { 
    id: number, 
    username: string 
} 

class App extends React.Component { 
    state = {users: Array<Iuser>()} 
    componentDidMount(){ 
    console.log("Fetching Users"); 
    fetch('/users') 
     .then(res=> res.json()) 
     .then(users=> this.setState({users})); 
    } 
    render() { 
    return (
     <div className="App"> 
     <div className="App-header"> 
      <img src={logo} className="App-logo" alt="logo" /> 
      <h2>Welcome to React test</h2> 
      {this.state.users.map(user => 
      <div key={user.id}>{user.username}</div> 
     )} 
     </div> 
     <p className="App-intro"> 
      To get started, edit <code>src/App.tsx</code> and save to reload. 
     </p> 
     </div> 
    ); 
    } 
} 

export default App; 

私の答えを解決し、私は以前にこれを試していたが、構文が間違っていました。

関連する問題