Skip to content

The inject option in Mixins cant be inferred #7751

Open
@rudyxu1102

Description

Vue version

3.2.47

Link to minimal reproduction

https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAbzgEwKYDNgDtUGELgQ5bwC+c6UBcA5AG4CuqNAsAFDsDGRAzvALLAAHtgCCcALwoM2PAUjEYACgTs4cbACtUnGAC44AbRroIEGgF12pAJTsuvePnCTpmHM4WoSKtXBDC2DwGhoIiWKIWADR+nFCoAIYwqMhKNoh+6gD0WXCoQmA68DAAnoVwMBBwDFgA1lgQAO5YmXDcWDwQADaoAHRdEADmSjAAFsA8vaYQdmzqpNY2QA

Steps to reproduce

As you can see, there is a ts error in the minimal reproduction above.

import { defineComponent } from 'vue'

const MixinA = defineComponent({
  inject: ['foo']
})

const Comp = defineComponent({
  mixins: [MixinA],
  created() {
    // expect type to unknown
    console.log(this.foo)
  }
})

What is expected?

foo should be inferred to unknown.

What is actually happening?

ts error: Property 'foo' does not exist on type 'CreateComponentPublicInstance<{}, {}, {}, {}, {}, DefineComponent<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<...>, {}>, ... 12 more ..., {}>'

System Info

No response

Any additional comments?

No response

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions