mirror of
https://github.com/vuejs/core.git
synced 2024-11-22 04:51:10 +00:00
types: improve app.directive type generics (#11926)
This commit is contained in:
parent
aa5dafd2b5
commit
1bad606eb3
@ -3,12 +3,17 @@ import { expectType } from './utils'
|
||||
|
||||
const app = createApp({})
|
||||
|
||||
app.directive<HTMLElement, string>('custom', {
|
||||
mounted(el, binding) {
|
||||
expectType<HTMLElement>(el)
|
||||
expectType<string>(binding.value)
|
||||
app.directive<HTMLElement, string, 'prevent' | 'stop', 'arg1' | 'arg2'>(
|
||||
'custom',
|
||||
{
|
||||
mounted(el, binding) {
|
||||
expectType<HTMLElement>(el)
|
||||
expectType<string>(binding.value)
|
||||
expectType<{ prevent: boolean; stop: boolean }>(binding.modifiers)
|
||||
expectType<'arg1' | 'arg2'>(binding.arg!)
|
||||
|
||||
// @ts-expect-error not any
|
||||
expectType<number>(binding.value)
|
||||
// @ts-expect-error not any
|
||||
expectType<number>(binding.value)
|
||||
},
|
||||
},
|
||||
})
|
||||
)
|
||||
|
@ -46,8 +46,23 @@ export interface App<HostElement = any> {
|
||||
name: string,
|
||||
component: T,
|
||||
): this
|
||||
directive<T = any, V = any>(name: string): Directive<T, V> | undefined
|
||||
directive<T = any, V = any>(name: string, directive: Directive<T, V>): this
|
||||
directive<
|
||||
HostElement = any,
|
||||
Value = any,
|
||||
Modifiers extends string = string,
|
||||
Arg extends string = string,
|
||||
>(
|
||||
name: string,
|
||||
): Directive<HostElement, Value, Modifiers, Arg> | undefined
|
||||
directive<
|
||||
HostElement = any,
|
||||
Value = any,
|
||||
Modifiers extends string = string,
|
||||
Arg extends string = string,
|
||||
>(
|
||||
name: string,
|
||||
directive: Directive<HostElement, Value, Modifiers, Arg>,
|
||||
): this
|
||||
mount(
|
||||
rootContainer: HostElement | string,
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user