如何在 Typescript 中获取没有模块或库的对象键?
How to get object keys without modules or libraries in Typescript?
如何用 "noLib": true
做 Object.getOwnPropertyNames(myObj);
、Object.keys(myObj);
或 for (k in myObj)
之类的事情?
我在使用 for (k in value)
时遇到 Property 'getOwnPropertyNames' does not exist on type 'ObjectConstructor'.
或 error TS2318: Cannot find global type 'Extract'.
之类的错误。
我正在尝试使用 Types for Adobe library 使用打字稿为 Adobe Illustrator 构建脚本,并且由于 Adobe 的扩展脚本不具备常见 JS 的所有功能,库的作者建议使用 "module": "none","noLib": true
在 tsconfig.json
有什么想法可以实现吗?
在任何想要使用现代 JS 构造的 ExtendScript 项目中,您将需要大量的 polyfill。 (把它想象成针对 IE8。)Babel is sure to be part of that approach; there's also a Babel preset for ExtendScript。在这种安排中,TypeScript 将提供给 Babel,而 Babel 将生成实际的 ExtendScript。
至于您正在使用的库,他们推荐 "noLib": true
因为他们的类型重新声明了所有 JS 原语,并且 ExtendScript 本身支持的接口有限。如果你要使用 Babel,你应该让 TypeScript 以更现代的 JS 为目标,让 Babel 处理其他细节。这意味着删除 "noLib"
并将 "target"
设置为类似 "ES2015"
的内容。我不确定这将如何与捆绑到 Types-for-Adobe
中的原始类型交互;你可能需要做一些花哨的事情来绕过它们。
(编辑评论:现在是 2021 年,真正的答案应该是让 Adobe 将 ExtendScript 提升到至少 2011 年的标准...)
如何用 "noLib": true
做 Object.getOwnPropertyNames(myObj);
、Object.keys(myObj);
或 for (k in myObj)
之类的事情?
我在使用 for (k in value)
时遇到 Property 'getOwnPropertyNames' does not exist on type 'ObjectConstructor'.
或 error TS2318: Cannot find global type 'Extract'.
之类的错误。
我正在尝试使用 Types for Adobe library 使用打字稿为 Adobe Illustrator 构建脚本,并且由于 Adobe 的扩展脚本不具备常见 JS 的所有功能,库的作者建议使用 "module": "none","noLib": true
在 tsconfig.json
有什么想法可以实现吗?
在任何想要使用现代 JS 构造的 ExtendScript 项目中,您将需要大量的 polyfill。 (把它想象成针对 IE8。)Babel is sure to be part of that approach; there's also a Babel preset for ExtendScript。在这种安排中,TypeScript 将提供给 Babel,而 Babel 将生成实际的 ExtendScript。
至于您正在使用的库,他们推荐 "noLib": true
因为他们的类型重新声明了所有 JS 原语,并且 ExtendScript 本身支持的接口有限。如果你要使用 Babel,你应该让 TypeScript 以更现代的 JS 为目标,让 Babel 处理其他细节。这意味着删除 "noLib"
并将 "target"
设置为类似 "ES2015"
的内容。我不确定这将如何与捆绑到 Types-for-Adobe
中的原始类型交互;你可能需要做一些花哨的事情来绕过它们。
(编辑评论:现在是 2021 年,真正的答案应该是让 Adobe 将 ExtendScript 提升到至少 2011 年的标准...)