gpt4 book ai didi

typescript - 为什么自动完成停止在 TypeScript 类型的对象中工作?

转载 作者:搜寻专家 更新时间:2023-10-30 21:05:13 25 4
gpt4 key购买 nike

我在一个对象中有一个路由列表,想将其导入其他文件并自动完成对象属性。

index.ts

import allRoutes from './routes';

allRoutes.routeHome;

routes.ts

const allRoutes = {
routeHome: '',
routePortfolio: 'portfolio'
};

export default allRoutes;

一切正常。但是,如果我将类型添加到我的 allRoutes 中以进行这样的类型检查:

const allRoutes: {[key: string]:string} = {
routeHome: '',
routePortfolio: 'portfolio'
};

或者像这样:

interface IRoutes {
[key: string]: string;
}

const allRoutes: IRoutes = {
routeHome: '',
routePortfolio: 'portfolio'
};

一切都崩溃了

我在 WebStorm 或 VSCode 中尝试这个。如果我为对象属性添加类型 - 自动完成将停止工作。为什么会这样?我该如何解决这个问题?

最佳答案

一旦用 { [key: string]: string } 类型初始化常量,原始类型就会丢失。如果您想保留原始类型但检查它是否可分配给 { [key: string]: string },您可以这样做:

function asStrings<T extends { [key: string]: string }>(arg: T): T {
return arg;
}

const allRoutes = asStrings({
routeHome: '',
routePortfolio: 'portfolio'
});

有一个suggestion对于不需要调用函数的解决方案。

关于typescript - 为什么自动完成停止在 TypeScript 类型的对象中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52146544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com