Reactjs 如何要求接口成员提供响应数据?
在下面的代码中,它编译得很好,我希望任何不符合接口历史的响应数据都会抛出错误。但是,情况并非如此,所有数据都处于正常状态。但是在任何响应对象上肯定没有thisPropertyDoesNotExist属性。为什么这里不需要接口?该标准将如何实施 最终的目标是让响应数据至少具有在接口中定义的数据,我非常感兴趣的是检查url是否不存在Reactjs 如何要求接口成员提供响应数据?,reactjs,typescript,Reactjs,Typescript,在下面的代码中,它编译得很好,我希望任何不符合接口历史的响应数据都会抛出错误。但是,情况并非如此,所有数据都处于正常状态。但是在任何响应对象上肯定没有thisPropertyDoesNotExist属性。为什么这里不需要接口?该标准将如何实施 最终的目标是让响应数据至少具有在接口中定义的数据,我非常感兴趣的是检查url是否不存在 import React, { useState, useEffect } from "react"; import { getStory } from "../ser
import React, { useState, useEffect } from "react";
import { getStory } from "../services/hnAPI";
interface Props {
storyId: number;
}
interface IStory {
id: number;
title: string;
url: string;
thisPropertyDoesNotExist: string;
}
export const Story: React.FC<Props> = (props) => {
const [story, setStory] = useState<IStory | null>(null);
useEffect(() => {
getStory(props.storyId)
.then((data: Required<IStory>) => {
data && setStory(data);
})
.catch((error) => {
console.log(error);
setStory(null);
});
}, [props.storyId]);
return story ? (
<p>
<a href={story.url}>{story.title}</a>
</p>
) : null;
};
最终的目标是让响应数据至少具有在接口中定义的数据,我非常感兴趣的是检查url是否不存在
import React, { useState, useEffect } from "react";
import { getStory } from "../services/hnAPI";
interface Props {
storyId: number;
}
interface IStory {
id: number;
title: string;
url: string;
thisPropertyDoesNotExist: string;
}
export const Story: React.FC<Props> = (props) => {
const [story, setStory] = useState<IStory | null>(null);
useEffect(() => {
getStory(props.storyId)
.then((data: Required<IStory>) => {
data && setStory(data);
})
.catch((error) => {
console.log(error);
setStory(null);
});
}, [props.storyId]);
return story ? (
<p>
<a href={story.url}>{story.title}</a>
</p>
) : null;
};
json对象的接口只是您在运行时未验证的承诺,即数据将与您所说的匹配。TypeScript在运行时不存在,它只是JavaScript,您不能在运行时使用接口
解决方案
但是,您可以编写JavaScript验证代码
*将类型返回到TypeScript
*确保对象与类型匹配
这种库的一个例子是:当接口被传输到javascript时,它在运行时不存在。您只有普通对象。我所知道的最好的解决方案是使用obj.hasownPropertyIsPropertyDoesnotexist检查某个属性是否存在。我想没有别的办法了。啊,真有趣!谢谢你的图书馆提示!