Den*_*nko 8 webstorm typescript visual-studio-code
我在一个对象中有一个路由列表,想将它导入到其他文件中,并对对象属性进行自动完成。
索引.ts
import allRoutes from './routes';
allRoutes.routeHome;
Run Code Online (Sandbox Code Playgroud)
路由.ts
const allRoutes = {
routeHome: '',
routePortfolio: 'portfolio'
};
export default allRoutes;
Run Code Online (Sandbox Code Playgroud)
一切正常。但是,如果我将类型添加到我的 allRoutes 以进行这样的类型检查:
const allRoutes: {[key: string]:string} = {
routeHome: '',
routePortfolio: 'portfolio'
};
Run Code Online (Sandbox Code Playgroud)
或者像这样:
interface IRoutes {
[key: string]: string;
}
const allRoutes: IRoutes = {
routeHome: '',
routePortfolio: 'portfolio'
};
Run Code Online (Sandbox Code Playgroud)
一切都崩溃了
我在 WebStorm 或 VSCode 中尝试过这个。如果我为对象属性添加类型 - 自动完成停止工作。为什么会发生?我该如何解决这个问题?
Mat*_*hen 13
一旦使用 type 初始化常量{ [key: string]: string },原始类型就会丢失。如果您想保留原始类型但检查它是否可分配给{ [key: string]: string },您可以这样做:
function asStrings<T extends { [key: string]: string }>(arg: T): T {
return arg;
}
const allRoutes = asStrings({
routeHome: '',
routePortfolio: 'portfolio'
});
Run Code Online (Sandbox Code Playgroud)
有一个不需要调用函数的解决方案的建议。
| 归档时间: |
|
| 查看次数: |
3686 次 |
| 最近记录: |