web-dev-qa-db-ja.com

反応フックとTypeScript-プロパティ '***'はタイプ 'never'には存在しません

私はこれにさまざまな角度から遭遇しましたが、現在私のコードは次のようになっており、次のエラーが発生します。

プロパティ 'albums'はタイプ 'never'に存在しません

Reactフックを使用していますが、dataで更新されたuseStateオブジェクトからエラーが発生します。dataにはプロパティalbums定義する方法、またはこれを行う場所がわかりません。

import React, { useState } from 'react';

interface ArtistProps {
   artistName: string,
}


const Artist: React.SFC< ArtistProps > = ({ artistName }) => {

    const [data, setData] = useState(null);

    return (
        <>
            <p>{artistName)}</p> // this is fine
            <p>{data.albums}</p> // error here
        </>
    );
}
4
peter flanagan

これを試して:

const [data, setData] = useState<null | {albums: any}>(null);

次に、次のようなdata変数を使用します

data!.albums 

!は、値がnullではないことをTypeScriptに通知するためのものです。ただし、nullの値を明示的に確認することをお勧めします。 data ? data.albums : 'no data'

P.S.の代わりに {albums: any}適切なインターフェースを追加します。

7