import type { ComponentRenderProxy, EmitsOptions, SetupContext, VNode, VNodeChild, } from 'vue' declare global { const require: (path: string) => any // 用来表示id类型 type ID = number | string const __APP_INFO__: { lastBuildTime: string } // declare interface Window { // // Global vue app instance // __APP__: App; // } type VueNode = VNodeChild | JSX.Element export type Writable = { -readonly [P in keyof T]: T[P] } type RemoveIndex = { [K in keyof T as string extends K ? never : number extends K ? never : K]: T[K] } type NullAndUnDef = undefined | null | void type Nullable = T | null type NonNullable = T extends null | undefined ? never : T type Recordable = Record type Key = string | number type ReadonlyRecordable = { readonly [key: string]: T } type Indexable = { [key: string]: T } type DeepPartial = { [P in keyof T]?: DeepPartial } type TimeoutHandle = ReturnType type IntervalHandle = ReturnType interface ChangeEvent extends Event { target: HTMLInputElement } interface WheelEvent { path?: EventTarget[] } function parseInt(s: string | number, radix?: number): number function parseFloat(string: string | number): number type EmitFn = SetupContext['emit'] namespace JSX { // tslint:disable no-empty-interface type Element = VNode // tslint:disable no-empty-interface type ElementClass = ComponentRenderProxy interface ElementAttributesProperty { $props: any } interface IntrinsicElements { [elem: string]: any } interface IntrinsicAttributes { [elem: string]: any } } } declare module 'vue' { export type JSXComponent = | { new (): ComponentPublicInstance } | FunctionalComponent }