【发布时间】:2021-07-31 06:24:22
【问题描述】:
我正在使用 Contentful App SDK 编写一个应用程序,但我遇到了 Typescript 类型的问题。我将参数传递给这样的对话框:
sdk.dialogs.openCurrentApp({title: "Edit Layout", parameters:{id}});
但是当我尝试访问对话框组件中的属性时,我发现当我尝试访问文档中描述的“调用”下的属性时,出现错误:“类型上不存在属性 'id' '对象'。”
const layoutId = sdk.parameters?.invocation?.id;
我尝试使用hasOwnProperty 检查该对象是否确实包含id 来强化我的代码,但它对 Typescript 输入错误没有帮助:
const layoutId = sdk.parameters?.invocation?.hasOwnProperty("id") && sdk.parameters.invocation.id;
我快速浏览了一下in the source of the SDK,发现 Parameter 确实使用了泛型对象类型。
我尝试创建一个添加了 id 的自定义类型并对其进行强制转换,但这并不完全奏效:
type ParameterInvocationWithId = {
id: string;
} & ParametersAPI;
...
const layoutId = sdk.parameters?.invocation?.hasOwnProperty("id") && sdk.parameters.invocation.id as ParameterInvocationWithId;
解决这个问题的最佳方法是什么?
【问题讨论】:
标签: typescript typescript-typings contentful