Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JS库的Typescript自定义类型,导入无效_Typescript_Vue.js_Types_Typescript2.0 - Fatal编程技术网

JS库的Typescript自定义类型,导入无效

JS库的Typescript自定义类型,导入无效,typescript,vue.js,types,typescript2.0,Typescript,Vue.js,Types,Typescript2.0,我有一个带有typescript的vue项目,我正在导入为创建的自定义类型,但这会生成错误: /Users/bmartins/Development/app invest/src/main.ts中出现错误(14,30): 14:30找不到模块“vue数字筛选器”的声明文件/Users/bmartins/Development/app invest/node_modules/vue numeric filter/dist/vue numeric filter.es.js“隐式”具有“any”类型。

我有一个带有typescript的vue项目,我正在导入为创建的自定义类型,但这会生成错误:

/Users/bmartins/Development/app invest/src/main.ts中出现错误(14,30): 14:30找不到模块“vue数字筛选器”的声明文件/Users/bmartins/Development/app invest/node_modules/vue numeric filter/dist/vue numeric filter.es.js“隐式”具有“any”类型。 尝试
npm安装@types/vue numeric filter
(如果存在),或添加包含
声明模块“vue numeric filter”的新声明(.d.ts)文件

在main.ts文件中,我有:

从“Vue”导入Vue;
从“/App.vue”导入应用程序;
从“Vuetify”导入Vuetify;
从“/plugins/vuetify”导入vuetify;
从“./router”导入路由器;
从“vue-apexcharts”导入VueAppExCharts;
从“Vuex”导入Vuex;
从“./store”导入存储;
从“./test/mock/store”导入{mockStore};
从“时刻”导入*作为时刻;
导入“时刻/地点/pt br”;
从“vue矩”导入VueMoment;
从“./store/constants”导入{API_URL,产品_类型};
从“vue数字过滤器”导入VueNumeralFilter;
Vue.组件('apexchart',VueAppEXCHARTS);
Vue.use(Vuetify);
Vue.use(Vuex);
use(VueNumeralFilter,{locale:'pt br'});
Vue.use(VueMoment{
那一刻,
});
对于我创建的文件夹结构类型:

App 
|_ src 
|_ types    
   |_ vue-numeral-filter
        |_ index.d.ts

我根据以下内容创建的索引d.ts:

从“数字”导入数字;
从“vue”导入{PluginObject};
声明命名空间VueNumeralFilterPlugin{
接口选项{
//可选(自维护)数字实例
数字?:数字;
}
接口VueStatic扩展数字{
(inp?:数字,格式?:字符串):字符串;
(inp?:数字):字符串;
}
}
声明模块“vue数字过滤器”{
接口Vue{
$numeric:VueNumeralFilterPlugin.VueStatic;
}
}
类型VueNumeralFilter=PluginObject;
声明常量VueNumeralFilter:VueNumeralFilter;
导出=VueNumeralFilter;
最后一部分是更改tsconfig.json:

{
“编译器选项”:{
“目标”:“esnext”,
“模块”:“esnext”,
“严格”:是的,
“jsx”:“保存”,
“进口者”:没错,
“moduleResolution”:“节点”,
“skipLibCheck”:正确,
“esModuleInterop”:正确,
“allowSyntheticDefaultImports”:true,
“源地图”:正确,
“baseUrl”:“,
“类型根”:[
“/类型”
],
“类型”:[
“网页包环境”,
“vue数字过滤器”,
“vuetify表单库”
],
“路径”:{
"@/*": [
“src/*”
]
},
“lib”:[
“下一步”,
“dom”,
“dom.iterable”,
“脚本主机”
]
},
“包括”:[
“src/***.ts”,
“src/***.tsx”,
“src/***.vue”,
“测试/***/.ts”,
“测试/***/*.tsx”
],
“排除”:[
“节点_模块”
]
}
我读了这篇文章好几次,它有一个惊人的解释,但仍然不知道如何解决它


有什么帮助吗?

类型定义文件在Typescript中可能有点挑剔。很容易编写TypeScript解释为模块而不是声明文件的东西。发生这种情况时,TypeScript开始希望您直接从文件导入类型,而不是识别嵌入的类型声明

在我看来,您的类型定义文件不正确。特别是,在模块声明之外有
import
s,这是TypeScript识别为模块标记的标志之一。如果移动
import
s,使它们位于
declare{…}
块中,我认为它将开始工作


另一方面,我认为您的
tsconfig.json
文件中的
typeroot
types
条目限制过度。我不认为这是造成问题的原因,但我认为您应该删除它们,否则您将在将来安装第三方类型时遇到问题。

类型定义文件在Typescript中可能有点挑剔。很容易编写TypeScript解释为模块而不是声明文件的东西。发生这种情况时,TypeScript开始希望您直接从文件导入类型,而不是识别嵌入的类型声明

在我看来,您的类型定义文件不正确。特别是,在模块声明之外有
import
s,这是TypeScript识别为模块标记的标志之一。如果移动
import
s,使它们位于
declare{…}
块中,我认为它将开始工作


另一方面,我认为您的
tsconfig.json
文件中的
typeroot
types
条目限制过度。我不认为这是造成问题的原因,但我认为您应该删除它们,否则您将在将来安装第三方类型时遇到问题。

谢谢您的回答,它可以工作!我还注意到,如果我获取准确的声明文件并移动到@types文件夹中的node_模块,它就会工作!似乎node_模块中的声明文件也有一些不同的解释!谢谢你的回答,它是有效的!我还注意到,如果我获取准确的声明文件并移动到@types文件夹中的node_模块,它就会工作!似乎node_模块中的声明文件也有一些不同的解释!