相关文章推荐
温柔的椰子  ·  android ...·  1 年前    · 

下面的TypeScript函数用于判断key是否存在对象类型中

export function isValidKey(key: string | number | symbol , object: object): key is keyof typeof object {
  return key in object;
a) 普通案例,当键值类型为string时
import { isValidKey } from '../../utils/common' // 引入插件
const imageList = {
  'hi': hi, 'codepower': codepower, 'experience': experience, 'designpower': designpower
const key = 'hi' // 本来是props传变量值,这里便于学习,我采用常数值了
const nativeImage = useMemo(() => { // useMemo做计算变量,如果是vue,可以理解为computed
  if (!isValidKey(key, imageList)) { // 先进行判断,之后就不会报错了
    throw Error('invalid sequence');
  return imageList[key]
},[key])
b) 复杂案例,当键值类型为any时

下列代码时axios的拦截监听函数,我想做的是将message组件函数直接封装到这里,就不要我们多次引入和添加了。但是在错误的时候出现了 ts(7053) 问题,修改如下

const httpStatus = { // http code 对应 msg 
  500: '尚未连接到后端'
instance.interceptors.response.use((response: AxiosResponse) => {
  switch (response.status) {
    case 201:
      message.success({
        content: response.data.msg
  return response;
}, (error: AxiosError) => {
  if (error.response !== undefined) { // 首先判断不为undefined类型
    if (isValidKey(error.response.status, httpStatus)) {
      message.error({
        content: httpStatus[error.response.status]
    } else {
      message.error({
        content: error.response.data.msg
  return Promise.reject(error);
});
                    ts7053: 元素隐式具有 “any” 类型,因为类型为 “any” 的表达式不能用于索引类型 “{ xxx: xxx; }”。在React-Typescript中遇到的问题,网上大部分都是修改配置什么的,我这里是加了个判断。复制插件下面的TypeScript函数用于判断key是否存在对象类型中export function isValidKey(key: string, object: object): key is keyof typeof object {  return key in o
				
问题: 元素隐式具有 “any“ 类型,因为类型为 “string“ 的表达式不能用于索引类型 “Object“。 在类型 “Object“ 上找不到具有类型为 “string“ 的参数的索引签名 描述: 在写代码的时候,对一个对象做了一个for…in循环,然后取到了其每一个key对应的value值,但是写完之后发现Typescript报错了,错误内容就是如题,有点奇怪,特此去了解一下 for (const key in obejct) { // 处理... obejct[key] import * as antIcons from "@ant-design/icons-vue"; export function setupAntdIcon(app: App<Element>): void { // 注册组件 Object.keys(antIcons).forEach((key) => { app.component(key, antIcons[key]);
最近在前端项目中遇到在用字符串当对象的key时报错,报错信息如下: “元素隐式具有 “any” 类型,因为类型为 “string” 的表达式不能用于索引类型” 在类型 XXX 上找不到具有类型为 “string” 的参数的索引签名。 搜索了一圈解决方案,没一个特别优雅的。 方案一,修改tsconfig 是修改tsconfig.json,加下面这行参数屏蔽检查,从而不报错。 "suppressImplicitAnyIndexErrors":true, 方案二,写一个函数转类型 export function
包含1391个指标,其说明文档参考: https://blog.csdn.net/yushibing717/article/details/136115027 数据来源:基于上市公司公告数据整理 数据期间:从具体上市公司上市那一年开始-2022年度的数据,年度数据 包含各上市公司股票的、多年度的上市公司财务报表资产负债表、上市公司财务报表利润表、上市公司财务报表现金流量表间接法、直接法四表合在一个面板里面,方便比较和分析利用 含各个上市公司股票的、多年度的 偿债能力 披露财务指标 比率结构 经营能力 盈利能力 现金流量分析 风险水平 发展能力 每股指标 相对价值指标 股利分配 11类财务指标分析数据合在一个面板里面,方便比较和分析利用 含上市公司公告的公司治理、股权结构、审计、诉讼等数据 包含1391个指标,如: 注册具体地址 公司办公地址 办公地址邮政编码 董事会秘书 董秘联系电话 董秘电子邮箱 ..... 其中:客户资金存款 结算备付金 其中:客户备付金 .........
引用<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [元素隐式具有 “any“ 类型,因为类型为 “string“ 的表达式不能用于索引类型](https://blog.csdn.net/weixin_43777074/article/details/121859150)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [TS元素隐式具有 “any“ 类型,因为类型为 “any“ 的表达式不能用于索引类型](https://blog.csdn.net/weixin_42164539/article/details/113945046)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
react-redux操作过程中,出现的问题:Uncaught ReferenceError: Cannot access ‘SET_XXXXX‘ before initialization 是的哈,用compression-webpack-plugin插件也行,网上看到相关配置就是这样的, [code=javascript] new compressionWebpackPlugin({ filename: '[path].gz[query]', algorithm: 'gzip', test: new RegExp('\\.(js|css)$'), threshold: 10240, minRatio: 0.8 [/code]
如何利用react-app-rewired,插入第三方插件配置,如Gzip打包 customize-cra可以配置自定义的plugin,不需要npm run eject,不需要用react-app-rewire-compression-plugin这个插件,compression-webpack-plugin就可以用