useState 与接口 - 反应本机打字稿

Posted

技术标签:

【中文标题】useState 与接口 - 反应本机打字稿【英文标题】:useState with interface- react native typescript 【发布时间】:2020-11-18 20:43:58 【问题描述】:

有没有一种方法可以将 useState 与接口类型一起使用?

这就是我正在尝试做的事情:

const [movie, setMovie] = useState(null);

[...]

.then((responseJson) => 
            var movie: Movie = 
                id : id,
                title: responseJson.original_title,
                backdrop: "https://image.tmdb.org/t/p/original" + responseJson.backdrop_path,
                note: responseJson.vote_average,
                numberNote: responseJson.vote_count,
                year: responseJson.release_date,
                runtime: responseJson.runtime,
                genre: responseJson.genres,
                plot: responseJson.overview,
            ;
            setMovie(movie);
        )

但是类型有错误。

我的界面:

interface Movie 
    id: number;
    title: string;
    backdrop: string;
    note: number;
    numberNote: number,
    year: number,
    runtime: number,
    genre: id: number, name: string[],
    plot: string

根据这篇文章:Set types on useState React Hook with TypeScript.

我可以尝试做类似的事情:

const [movie, setMovie] = useState<Movie>(id: 0,
        title: "",
        backdrop: "",
        note: 0,
        numberNote: 0,
        year: 0,
        runtime: 0,
        genre: [id: 0, name: ""],
        plot: "");

但它看起来并不干净,我认为这不是将随机值置于第一个状态的好解决方案。

【问题讨论】:

这能回答你的问题吗? Set types on useState React Hook with TypeScript 是和不是...我会更新我的帖子来解释原因 可以使用联合类型(null) 【参考方案1】:

您可以通过以下方式暗示状态类型:

const [movie, setMovie] = useState<Movie|null>(null);

【讨论】:

以上是关于useState 与接口 - 反应本机打字稿的主要内容,如果未能解决你的问题,请参考以下文章

反应本机打字稿如何键入 FlatList

打字稿和本机反应的 ForwardRef 错误

使用打字稿路径映射时反应本机加载模块错误

在 useState 的调度中使用未声明的字段时如何获取打字稿错误

反应本机打字稿屏幕测试返回测试套件无法运行 AsyncStorage 为空

用打字稿反应上下文