javascript - TypeScript 在 JavaScript 函数中为 this.varName 分配类型

标签 javascript typescript

我有一个用 JavaScript 编写的旧项目,我只需将其重命名为 .ts 即可将其“转换”为 TypeScript。

一切正常,但我不知道如何为以下示例分配类型:

function test(userid: number) {
    var that = this;
    this.UserId = userid;
    //this.UserId : number = userid;   //Not Working
}

test.prototype.load = () => {
     var id = this.UserId;
}

我不知道如何将 TypeDefinition 分配给本地 UserId 变量。这只是一个简单的例子。我的项目非常大,我无法重构整个项目。

最佳答案

我不知道如何将类型分配给 this.UserId。我不认为,你可以做到这一点,因为这就是 classes 的用途。

在 TypeScript 中你可以这样写:

class test {
    public UserId: number;

    constructor(userid: number) {
        this.UserId = userid;
    }

    public load = () => {
        let id = this.UserId;
    }
}

翻译为:

var test = (function () {
    function test(userid) {
        var _this = this;
        this.load = function () {
            var id = _this.UserId;
        };
        this.UserId = userid;
    }
    return test;
})();

如果您没有资源来重写您的应用程序,那么我会简单地选择:

function test(userid: number) {
    this.UserId = userid; // Don't add type here ...
}

test.prototype.load = () => {
    var id = this.UserId as number; // ... add type here
}

虽然没有那么强大,但总比没有好。

关于javascript - TypeScript 在 JavaScript 函数中为 this.varName 分配类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33518086/

相关文章:

javascript - Internet Explorer 中的工具提示问题

javascript - 使用不同的浏览器和 Node.js 实现将 Javascript 库作为 ES6 模块发出

javascript - 如何在 Angular 中使用 *ngFor 动态调用所有图像并显示?

javascript - 动态添加完整日历不起作用

node.js - Mongoose 错误: Property 'Buffer' does not exist on type 'typeof globalThis'

reactjs - React + TypeScript 仅允许特定类型的子级

node.js - Puppeteer 由于 Node 模块错误而失败

angular - 如何仅在第一个请求完成时触发新的 http 请求并忽略/取消其间的所有其他请求

javascript - moment-timezone.js – 在 Jest 测试中运行时出现错误

javascript - Facebook 评论和点赞问题