gpt4 book ai didi

javascript - 类型 'MyObject' 上不存在属性 - typescript 扩展

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

我在 Date 对象上创建了一个基本扩展,它工作正常。以下是我的代码:

date.extensions.ts

export {}

declare global {
interface Date {
toSQLiteString(): string;
}
}

Date.prototype.toSQLiteString = function() {
let tzo = -this.getTimezoneOffset();
let dif = tzo >= 0 ? '+' : '-';
let pad = function(num) {
let norm = Math.abs(Math.floor(num));
return (norm < 10 ? '0' : '') + norm;
};

return this.getFullYear() +
'-' + pad(this.getMonth() + 1) +
'-' + pad(this.getDate()) +
'T' + pad(this.getHours()) +
':' + pad(this.getMinutes()) +
':' + pad(this.getSeconds()) +
dif + pad(tzo / 60) +
':' + pad(tzo % 60);
};

现在,我想在自定义对象上创建一个扩展文件,我们将其命名为 MyModel。这个对象在另一个文件中定义,看起来像这样(非常简单的例子)

export class MyObject {
id: number = 0;
name: string = ''
}

现在我想创建一个名为 MyObject.extensions.ts 的文件并具有扩展功能,所以我创建了这个并且文件看起来像这样

import { MyObject } from './my-object.ts'

export {}

declare global {
interface MyObject {
getIdAndName(): string;
}
}

MyObject.prototype.getIdAndName = function() {
return this.id + ' - ' + this.name;
};

但是,由于某种原因,我在 typescript 中遇到错误

enter image description here

但是,如果我删除文件顶部的 import,错误就会消失,但我会得到一个不同的错误,如下所示

enter image description here

我正在使用 typescript 2.4.2

非常感谢任何建议

最佳答案

您的类不在模块中的全局命名空间中,您应该扩展模块声明:

import { MyObject } from './my-object'

export {}

declare module './my-object' {
interface MyObject {
getIdAndName(): string;
}
}

MyObject.prototype.getIdAndName = function() {
return this.id + ' - ' + this.name;
};

同时从模块导入中删除 .ts 扩展名。

关于javascript - 类型 'MyObject' 上不存在属性 - typescript 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46193591/

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