gpt4 book ai didi

javascript - 在 TypeScript 中增强自定义类型

转载 作者:行者123 更新时间:2023-12-02 21:24:16 25 4
gpt4 key购买 nike

我广泛使用顶点数组,如 Vertex[]并且有许多方法对这样的数组执行一些操作,例如:

public doSomethingWith(polygon: Vertex[]) {...}

这个想法是创建单独的类型,例如

type Polygon = Array<Vertex>;

并封装所有方法,例如:

Polygon.prototype.doSomethingWith = () => true;

但实际上最后一行语法不起作用。

问题:如何使用方法(如 type Polygon = Array<Vertex> )扩展自定义类型(如 Polygon.prototype.doSomethingWith = () => true; )?

更新:我最终得到了单独的类(class) Polygons包含接受 Vertex[] 的静态方法作为输入参数。用法如Polygons.doSomethingWith(polygon) ;如果有人有更好的想法,请告诉我。

最佳答案

这似乎都是错误的,所以如果我不明白你的意思,请纠正我。

目前,这就是假设 Vertex 只有三个点的情况。

type Vertex = [number, number, number]
type Polygon = Array<Vertex>;
const Poly: Polygon = [[1,2,3], [1,2,3]]

多边形只是一个顶点数组,因此 TypeScript 看不到附加到它们的任何函数。

如果你想让一个 Polygon 具有函数,你需要将它变成一个类或一个像这样的对象。

type Vertex = [number, number, number]

class Polygon {
vertices: Vertex[] = []
doSomethingWith () {
// do something to this.vertices
}
}
const Poly = new Polygon()
Poly.doSomethingWith()

如果你希望你的多边形只是一个顶点数组并且有一个单独的版本有函数。不要更改 Polygon 类型,因为它将不再忠实于其结构,而是创建一个新类型。

我认为这很难看,但看看你能做什么很有趣。

type Vertex = [number, number, number]
type Polygon = Array<Vertex>;
type FnPolygon = Polygon & {
doSomething: () => any
}

function PolyToFnPoly (poly:Polygon):FnPolygon {
const fnPoly = pol...

Playground Link

enter image description here

关于javascript - 在 TypeScript 中增强自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60777542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com