酒量小的楼房 · 狂人日记(李建军导演的话剧)_百度百科· 3 月前 · |
发财的乌龙茶 · 中甲-马西卡传射巴巴卡头槌 ...· 1 年前 · |
沉稳的咖啡豆 · 普京大傳 - Top 1000件普京大傳 ...· 1 年前 · |
粗眉毛的丝瓜 · 预售价超77万,续航488km,奥迪e-tr ...· 1 年前 · |
仗义的登山鞋 · 中东财团的足球野望:探秘城市足球集团(上) ...· 1 年前 · |
我以前见过这样的答案,但它们似乎没有涵盖这个特定的用例(或者它们不起作用/帮助)
import {Route} from 'vue-router';
export const detailRoute = {
path: '/detail/:id',
component: Detail,
props: (route: Route) => ({
state: route.query.state
};
detailRoute使用的是我正在导入的路由,但我想作为一个命名的导入{路由},它不工作吗?有什么不同的或更好的方法来做到这一点吗?我也试过
export {Route};
,但没有用。
tsconfig.json:
{
"compilerOptions": {
"target": "ES2017",
"module": "ES2015",
"moduleResolution": "Node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"forceConsistentCasingInFileNames": true,
"allowSyntheticDefaultImports": true,
"noEmitHelpers": true,
"importHelpers": true,
"pretty": true,
"alwaysStrict": true,
"declaration": true,
"declarationDir": "./types",
"lib": [
"DOM",
"ES2017",
"DOM.Iterable",
"ScriptHost"
"baseUrl": "./client",
"paths": {
"styles/*": ["./app/core/styles/*"],
"core/*": ["./app/core/*"],
"components/*": ["./app/components/*"],
"containers/*": ["./app/containers/*"],
"assets/*": ["./assets/*"],
"config/*": ["./config/*"]
}
准确错误:
TS4023: Exported variable 'detailRoute' has or is using name 'Route' from external module "/Users/chris/<projectname>/node_modules/vue-router/types/router" but cannot be named.
发布于 2017-05-10 19:23:59
编译器无法确定
detailRoute
的确切形状,因为它不知道
Route
的形状。
备选案文1
一种方法是从源导入
Route
,从而提供编译器确定
detailRoute
形状所需的信息。
import { Route } from "./../node_modules/vue-router/types/router";
export const detailRoute = {
props: (route: Route) => null,
};
由于
vue-router
(您在问题中是导入的)再导出
Route
,所以它没有提供编译器所需的直接引用
Route
。
选项2
另一种选择是从静态类型中完全选择
detailRoute
。
import { Route } from 'vue-router'; // index.d.ts
export const detailRoute: any = {
props: (route: Route) => null,
};
由于
any
选择-退出静态类型,编译器不需要计算出
detailRoute
的形状。
选项3
另一个选择是你在自己的答案中所做的。由于您提供了类型注释,所以编译器再次不需要计算出
detailRoute
的形状。
import { Route, RouteConfig } from 'vue-router'; // index.d.ts
export const detailRoute: RouteConfig = {
props: (route: Route) => null,
};
另请参阅
https://github.com/Microsoft/TypeScript/issues/5711
当试图发出模块时,编译器需要编写一个对象类型文字.表示模块的形状。但是范围中没有一个直接引用路由的名称,所以类型“不能命名”并且有一个错误。 如果你直接输入路线.错误应该消失。
发布于 2017-05-10 19:05:18
显然这就是解决我的问题的方法:
import {Route, RouteConfig} from 'vue-router';
export const detailRoute: RouteConfig = {
path: '/detail/:id',