typescript - 生成的 Figma 插件不包含 TS 类型
问题描述
我正在尝试按照此处找到的插件设置指南进行操作,并且我有一个非常非常简单的插件,如下所示:
figma.showUI(__html__);
// @ts-ignore
console.log(figma.currentPage.selection[0].cornerRadius);
正如所写,插件工作正常并返回所选节点的边界半径。
但是,如果我删除// @ts-ignore
TS 会抱怨:“'SceneNode' 类型上不存在属性 'cornerRadius'。”
我已经从这里安装了类型,我的 .tsconfig 看起来像这样:
{
"compilerOptions": {
"target": "es6",
"lib": ["es6", "dom"],
"typeRoots": [
"./node_modules/@types",
"./node_modules/@figma"
]
}
}
我错过了什么?
解决方案
figma.currentPage.selection
返回一个SceneNode
数组。SceneNode
没有CornerMixin
which 定义cornerRadius
。您需要检查是否支持节点类型。
即查看以下type
字段SceneNode
:
const selection = figma.currentPage.selection[0];
if (selection.type === "RECTANGLE") {
console.log((selection as RectangleNode).cornerRadius);
}
以下类型使用CornerMixin
,基于类型插件声明文件:
RectangleNode
EllipseNode
PolygonNode
StarNode
VectorNode
BooleanOperationNode
推荐阅读
- java - 如何使用java下载在本地计算机中编写的csv文件
- c++ - 如何使用 qmlRegisterType 在 QML 中指定 c++ 类型?
- machine-learning - 具有不平衡数据集的分类问题的性能度量
- unity3d - 动态控制 Unity Cinemachine vCams Blends:如何?
- apostrophe-cms - 是否可以根据其他字段值更改字段行为?
- excel - 将 cell.value 从一个范围传递到另一个子
- opencv - houghlinesp 和阈值处理
- r - 如何编写 n 个步骤,其中每个步骤都是从上一步创建的数据框?
- python - 当您的环境缺少模块时,如何快速运行 GitHub Code?
- vue.js - this.$route 在使用 this.$router.push() 时是否自动添加到参数中