问题
- typescript 引入没有申明过的第三方库
- typescript 中应用 map forEach filter find 遍历用 [] 取属性时报错 Element implicitly has an ‘any’ type because expression of type ‘string’ can’t b…
解答
1. 申明第三方库
- 有的第三方库是有申明文件的,这时咱们只须要
npm install @types/{模块名}
-
没有申明文件的第三方库
- 在我的项目的 src 下建一个 @type 文件夹,在这个文件夹上来编写申明文件
- 例子
// main.ts
import {VeRadarChart} from 've-charts'
Vue.component('VeRadarChart', VeRadarChart)
// @types/definition.d.ts
declare module 've-charts' {export class VeRadarChart {}
}
像这样申明一下就能用了
2. 用 [] 获取属性报错
// index.vue
import Service from './service.ts'
const tService: any = Service
// Service 不能间接被遍历获取属性,然而 tService 能够
let _promises = this.formItem.map(({service}: any): any => {return tService[service]()})
// Promise.all...........xxxx......
// service.ts
export default {async getList(params) {return await XXXXXX}
}
// const.ts
type FormItem<T> = {
label: T
prop: T
type: T
service: T
}
export const formItem: Array<FormItem<any>> = [
{
label: '投诉类型',
prop: 'complainType',
type: 'select',
service: 'getComplainType'
},
{
label: '问题维度',
prop: 'problemDim',
type: 'select',
service: 'getProblemDim'
},
{
label: '用户危险等级',
prop: 'riskLevel',
type: 'select',
service: 'getRiskLevel'
}
]