SVG类型在Flow.js中的支持?

huangapple go评论85阅读模式
英文:

SVG types support in Flow.js?

问题

我看了各种 github thread,似乎在当前版本的 Flow.js 中还没有合并/发布 SVG 支持(我正在使用 VS Code 扩展 vscode-flow-ide)。我正在尝试使用 SVG 引用,目前不得不使用不太具体的类型(Element)和 // $FlowFixMe 的混合来解决这些问题 - 从更广泛的类型安全角度来看并不理想。

有人解决了这个问题吗?我目前正在使用 /flow/lib/dom.js,但它缺少这些类型。

英文:

I've looked around at various github threads and it seems as if SVG support is not merged / shipped in current versions of Flow.js (I'm using VS Code extension vscode-flow-ide). I'm trying to work with SVG refs and for now have had to use a mix of less-specific type (Element) and // $FlowFixMe to work around these - not ideal from a broader type-safety perspective.

Anyone solved this? I'm using /flow/lib/dom.js currently, but it lacks these types.

答案1

得分: 2

中文翻译:

临时解决方案 直到官方包含...

对于缺失的类型,为您打算使用的属性子集实现您自己的类型。

例如,我正在操作SVG,所以在一个名为 SVGElement.js.flow 的文件中(以 DOM 类型 命名):

type SVGElement = HTMLElement & 
{
    fonts: [],
    fillOpacity: number
    //...
    //实际上,SVGElement 有更多的属性,但您可以只包含  
    //您将要使用的属性,这样可以保证类型安全。
    //随着时间的推移,您可以逐步添加您需要的任何内容。
}

只为方法和属性的子集添加类型比实现整个类型更容易。

& 允许从 /flow/lib/dom.js 中的 HTMLElement 进行继承;请参阅 交叉类型

英文:

Interrim solution until the official inclusions are made...

For types that are missing, implement your own for that subset of properties that you intend to use.

For example, I am manipulating SVGs, so in a file SVGElement.js.flow (named after the DOM type):

type SVGElement = HTMLElement & 
{
    fonts: [],
    fillOpacity: number
    //...
    //In reality, SVGElement has many more properties, but you can include  
    //only those you will use and which thus require type-safety.
    //You can add whatever you need, incrementally, as time passes.
}

Typing only subsets of methods & properties is easier than having to implement the entire type.

The & allows inheritance from HTMLElement present in /flow/lib/dom.js; see intersection types.

huangapple
  • 本文由 发表于 2020年1月3日 20:06:55
  • 转载请务必保留本文链接:https://go.coder-hub.com/59578362.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定