Skip to content

Commit

Permalink
fix(types): fix missing error for accessing undefined instance proper…
Browse files Browse the repository at this point in the history
…ties

fix #12718
  • Loading branch information
yyx990803 committed Aug 19, 2022
1 parent 7161176 commit 8521f9d
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 8 deletions.
62 changes: 59 additions & 3 deletions types/test/v3/define-component-test.tsx
Expand Up @@ -1166,6 +1166,62 @@ defineComponent({
}
})

// #12742 allow attaching custom properties (consistent with v3)
const Foo = defineComponent({})
Foo.foobar = 123
describe('constructor attach custom properties', () => {
// #12742 allow attaching custom properties (consistent with v3)
const Foo = defineComponent({})
Foo.foobar = 123
})

describe('constructor instance type', () => {
const Comp = defineComponent({
data() {
return {
a: 1
}
},

computed: {
ac() {
return 1
}
},

methods: {
callA(b: number) {
return b
}
},

setup() {
return {
sa: '1'
}
}
})

const comp = new Comp()

expectType<number>(comp.a)
expectType<number>(comp.ac)
expectType<string>(comp.sa)
expectType<(b: number) => number>(comp.callA)
})

describe('should report non-existent properties in instance', () => {
const Foo = defineComponent({})
const instance = new Foo()
// @ts-expect-error
instance.foo

const Foo2 = defineComponent({
data() {
return {}
},
methods: {
example() {}
}
})
const instance2 = new Foo2()
// @ts-expect-error
instance2.foo
})
10 changes: 5 additions & 5 deletions types/v3-define-component.d.ts
Expand Up @@ -72,7 +72,7 @@ export type DefineComponent<
*/
export function defineComponent<
RawBindings,
D = Data,
D = {},
C extends ComputedOptions = {},
M extends MethodOptions = {},
Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,
Expand Down Expand Up @@ -101,8 +101,8 @@ export function defineComponent<
*/
export function defineComponent<
PropNames extends string,
RawBindings = Data,
D = Data,
RawBindings = {},
D = {},
C extends ComputedOptions = {},
M extends MethodOptions = {},
Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,
Expand Down Expand Up @@ -140,8 +140,8 @@ export function defineComponent<
*/
export function defineComponent<
Props,
RawBindings = Data,
D = Data,
RawBindings = {},
D = {},
C extends ComputedOptions = {},
M extends MethodOptions = {},
Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,
Expand Down

0 comments on commit 8521f9d

Please sign in to comment.