小编Bab*_*age的帖子

模块扩充在 .vue 文件中不起作用

有一个模块扩充(types/test.d.ts):

import Vue from 'vue'

declare module 'vue/types/vue' {
  interface Vue {
    $test: string
  }
}
Run Code Online (Sandbox Code Playgroud)

并将其包含为(tsconfig.json):

// ...
"include": [
    "src/**/*.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "tests/**/*.ts",
    "tests/**/*.tsx",
    "types/*.d.ts"
  ],
// ...

Run Code Online (Sandbox Code Playgroud)

然后,它在任何.ts文件中都能正常工作:

在此处输入图片说明 在此处输入图片说明

但它只是在.vue文件中 得到一个编译错误在此处输入图片说明

有人可以帮助我吗?

typescript vue.js vue-component typescript-typings vuejs2

6
推荐指数
1
解决办法
276
查看次数

打字稿:返回`typeof class`的`instance type`

我有一个函数,当您输入Class name或 时Class constructor,它将返回该类的实例:

type ConstructorOf<C> = { new (...args: any[]): C; };

const ClassMap = {
  'Class1': Class1,
  'Class2': Class2,
};

function getInstance<Cls>(c: ConstructorOf<Cls>): Cls;
function getInstance<N extends keyof typeof ClassMap>(key: N): typeof ClassMap[N]; // It return typeof Class1/Class2
function getInstance<N extends keyof typeof ClassMap, Cls>(key: N | ConstructorOf<Cls>) {
  if (typeof m === 'string') {
    return CreateInstance(ClassMap[key]);
  }
  return CreateInstance(key);
}
Run Code Online (Sandbox Code Playgroud)

的第二个定义getInstance不是我想要的,因为它返回的是typeof Class但不是Class

我应该如何修改这部分?

typescript typescript-generics typescript-typings typescript2.0

2
推荐指数
1
解决办法
1201
查看次数