首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在类型记录函数中声明“this”的类型?

在类型记录函数中声明“this”的类型?
EN

Stack Overflow用户
提问于 2015-03-07 22:24:38
回答 4查看 50.4K关注 0票数 77

我在用格朗特任务写TypeScript。我正在尝试翻译我在JavaScript中已经拥有的东西。

所以,当grunt运行一个任务时,它会运行一个函数。运行时,grunt会将this设置为具有有用属性的对象,就像jQuery用您正在处理的元素重载this一样。我可以访问有用的属性,如this.files

代码语言:javascript
运行
复制
grunt.registerMultiTask('clean', function() {
    this.files.forEach(function(f) { Delete(f); });
});

因此,“删除this.files中的所有文件”。

但是,在TypeScript中,我不知道您是否可以向编译器“提示”this是一种特定类型,因此我无法获得intellisense。我如何告诉TypeScript将this视为一种不同的类型?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-07 22:41:32

我如何告诉TypeScript把这看作是另一种类型

您可以通过声明一个this参数来实现这一点。对于您的用例,我添加了this: {files:any[]}

代码语言:javascript
运行
复制
grunt.registerMultiTask('clean', function(this: {files:any[]}) {
    this.files.forEach(function(f) { Delete(f); });
});

更多

票数 40
EN

Stack Overflow用户

发布于 2016-12-28 08:45:54

现在(从TS 2.0)您可以通过使用this参数指定函数的假这个类型(应该是第一个):

代码语言:javascript
运行
复制
grunt.registerMultiTask('clean', function(this: SomeType) {
    //...
});

this参数是函数的参数列表中第一位的假参数。

更多信息这里

票数 122
EN

Stack Overflow用户

发布于 2018-02-02 16:29:34

虽然我发现现在可以这样做:

代码语言:javascript
运行
复制
class ClassyClass {
    prop = 'Juicy Strings'
}

function x( this: ClassyClass ) {
    console.log( this.prop )
}

我更喜欢在争论中不占用房地产的另一种选择

代码语言:javascript
运行
复制
function x() {
    const that: ClassyClass = this

    console.log( that.prop )
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28920753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档