首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Typescript对象属性类型

Typescript对象属性类型
EN

Stack Overflow用户
提问于 2018-08-29 19:51:16
回答 1查看 77关注 0票数 1

我有一个这样的函数调用:

代码语言:javascript
复制
var myVar = myFunction({
    property: 'prop',
    functionProperty() {
         console.log(this.property);
    },
    functionProperty2() {
         this.functionProperty();
    }
});

有没有办法向传递给函数的对象添加类型,而不需要先声明它?

另一个问题是,有没有办法让this.functionProperty()知道这指的是对象?在悬停时使用VSCode,它不会将关键字this识别为对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-29 20:32:41

如果您使用编译器选项noImplicitThis,那么this将在您的对象文字函数中正确键入。

代码语言:javascript
复制
function myFunction<T>(o: T) {

}

var myVar = myFunction({
    property: 'prop',
    functionProperty() {
        console.log(this.property);
    },
    functionProperty2() {
        this.functionProperty();
        this.missing // error

    }
});

如果您需要更多地控制this的类型,您可以使用ThisType,这是编译器的一个特殊标记,它将告诉编译器在对象文字函数中this的类型是什么(但这也需要noImplicitAny)。

代码语言:javascript
复制
function myFunction<T>(o: T & ThisType<T & { extra: boolean }>) {

}

var myVar = myFunction({
    property: 'prop',
    functionProperty() {
        console.log(this.property);
    },
    functionProperty2() {
        this.functionProperty();
        this.missing // error
        this.extra //ok
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52076793

复制
相关文章

相似问题

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