javascript - 禁用警告“属性类型在映射类型中循环引用自身”或解决方法
问题描述
我怎样才能在我的整个项目中禁用这种错误或者解决方法?
属性“UID”的类型在映射类型“部分”中循环引用自身。ts(2615)
所以这里是 js 和 vscode 的问题。如果我说数据类型是/** @param {A} [data] */
来自new A({})
实例的错误,我需要完全填充部分对象,否则我会得到 linter 错误!
如果我说数据类型是部分 obj /** @param {Partial<A>} [data] */
,现在new A({})
可以正常工作,但是我得到构造函数的 linter 错误!
如果我说/** @param {A|Partial<A>} [data] */
,没有更多的错误!但是所有道具都变得未定义(任何)并且丢失了类型!在这种情况下,Vscode IntelliSense 似乎有点丢失。!
这是一个示例代码,我怎么能说数据是一个部分对象,但如果没有,默认设置!!!!
测试用例: /** @param {A} [data]*/
- /** @param {Partial<A>} [data] */
-/** @param { A | Partial<A>} [data] */
export class A {
/** @param {Partial<A>} [data] */ // how say is partial and also default ?
constructor(data) {
/** uid global du data */
this.UID = data.UID || 'noUID';
this.prop = data.prop || {};
}
get VIEW() {
return this.constructor.name;
}
}
const a = new A ({UID:'g42t'})
感谢您的任何帮助或建议,
我想要一个有效的解决方案,它允许有一个良好的工作流程,没有重复
我也在这里打开问题,如果是错误? https://github.com/microsoft/vscode/issues/108062
解决方案
不知道为什么你也从未标记过这个 Typescript。:)
但是这里的类的一部分并没有多大意义,通常类型的事实来源是某种接口/类型,推断的类型当然只是从某种具体的类型推断出来的。这里你没有给你的类任何具体的类型,所以 Typescript 会尝试推断并且会因为明显的原因而失败,但即使它没有,它也不会很有用,例如。它会有一个readonly VIEW()
不是我认为你的东西,你真的希望能够发送一个可选的readonly View()
吗??
所以简单的解决方案,只需提供您期望的类型的数据。
例如。
export class A {
/** @param {{UID?:string, prop?:object}} [data] */
constructor(data) {
/** uid global du data */
this.UID = data.UID || 'noUID';
this.prop = data.prop || {};
}
get VIEW() {
return this.constructor.name;
}
}
const a = new A ({UID:'g42t'})
推荐阅读
- ios - 当应用程序在后台时,深度链接不起作用?
- javascript - Promise Callback 之外的价值持久性
- reactjs - react js中不保留模态值
- c# - 如何在字符串中的条件运算符前后添加空格?
- android - 在 Android 中使用 WebRTC 实时流 GlSurfaceview 和相机预览
- c++ - MFC CString 构造函数操作
- python - 'ascii' 编解码器无法在位置 438 对字符 u'\u2602' 进行编码:序数不在范围内(128)
- powershell - 比较 Powershell 中的两个列表
- c - 父进程跟踪子进程的终止状态
- java - SessionNotCreatedException:会话未创建来自未知错误的异常:Runtime.executionContextCreated 与 Chrome 驱动程序具有无效的“上下文”