global.d.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import type {
  2. ComponentRenderProxy,
  3. EmitsOptions,
  4. SetupContext,
  5. VNode,
  6. VNodeChild,
  7. } from 'vue'
  8. declare global {
  9. const require: (path: string) => any
  10. // 用来表示id类型
  11. type ID = number | string
  12. const __APP_INFO__: {
  13. lastBuildTime: string
  14. }
  15. // declare interface Window {
  16. // // Global vue app instance
  17. // __APP__: App<Element>;
  18. // }
  19. type VueNode = VNodeChild | JSX.Element
  20. export type Writable<T> = {
  21. -readonly [P in keyof T]: T[P]
  22. }
  23. type RemoveIndex<T> = {
  24. [K in keyof T as string extends K
  25. ? never
  26. : number extends K
  27. ? never
  28. : K]: T[K]
  29. }
  30. type NullAndUnDef = undefined | null | void
  31. type Nullable<T> = T | null
  32. type NonNullable<T> = T extends null | undefined ? never : T
  33. type Recordable<T = any> = Record<string, T>
  34. type Key = string | number
  35. type ReadonlyRecordable<T = any> = {
  36. readonly [key: string]: T
  37. }
  38. type Indexable<T = any> = {
  39. [key: string]: T
  40. }
  41. type DeepPartial<T> = {
  42. [P in keyof T]?: DeepPartial<T[P]>
  43. }
  44. type TimeoutHandle = ReturnType<typeof setTimeout>
  45. type IntervalHandle = ReturnType<typeof setInterval>
  46. interface ChangeEvent extends Event {
  47. target: HTMLInputElement
  48. }
  49. interface WheelEvent {
  50. path?: EventTarget[]
  51. }
  52. function parseInt(s: string | number, radix?: number): number
  53. function parseFloat(string: string | number): number
  54. type EmitFn<E = EmitsOptions> = SetupContext<E>['emit']
  55. namespace JSX {
  56. // tslint:disable no-empty-interface
  57. type Element = VNode
  58. // tslint:disable no-empty-interface
  59. type ElementClass = ComponentRenderProxy
  60. interface ElementAttributesProperty {
  61. $props: any
  62. }
  63. interface IntrinsicElements {
  64. [elem: string]: any
  65. }
  66. interface IntrinsicAttributes {
  67. [elem: string]: any
  68. }
  69. }
  70. }
  71. declare module 'vue' {
  72. export type JSXComponent<Props = any> =
  73. | { new (): ComponentPublicInstance<Props> }
  74. | FunctionalComponent<Props>
  75. }