gpt4 book ai didi

typescript - 如何将属性添加到 typescript 中的现有类型?

转载 作者:搜寻专家 更新时间:2023-10-30 21:05:45 25 4
gpt4 key购买 nike

我正在尝试向 javascript“日期”原型(prototype)添加一个属性。

在 javascript 中,我会这样做:

Object.defineProperty(Date.prototype, "fullYearUTC", {
get: function () { return this.getUTCFullYear(); },
enumerable: true,
configurable: true
});

我以为我只能在 typescript 中执行以下操作:

class Date
{
get fullYearUTC(): number { return this.getUTCFullYear() }
}

但是我得到了错误

Cannot redeclare block-scoped variable 'Date'.

为什么这行不通?

(请不要评论您是否认为这样做是个好主意。这个问题与此无关。)

最佳答案

交叉路口类型

在 typescript 中,如果要添加成员,可以使用交集类型:

type DateWithNewMember <T> = Partial<T>
& { newMember: boolean }

然后像这样使用:

dates: DateWithNewMember<Date>[];

联合类型

你可以使用 Union 类型:

class newDateClass {
readonly fullYearUTC: number;
}

然后像这样使用:

date: Date | newDateClass

关于typescript - 如何将属性添加到 typescript 中的现有类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40876478/

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