所以我们开始尝试Typescript。我在Vue中自动全局组件注册时可以查看此功能。老实说,我不知道如何在Typescript中进行翻译。这是fileName
函数中的camelCase(fileName.split('/'))
。
import upperFirst from 'lodash/upperFirst'
import camelCase from 'lodash/camelCase'
// other code
requireComponent.keys().forEach(fileName => {
const componentConfig = requireComponent(fileName)
// here
const componentName = upperFirst(
camelCase(
fileName
.split('/')
.pop()
.replace(/\.\w+$/, '')
)
)
Vue.component(
componentName,
componentConfig.default || componentConfig
)
})
打字稿错误TS2532:对象可能是“未定义”
答案 0 :(得分:0)
pop
返回string | undefined
,因此您可以将其保存在变量中以检查undefined
或加粗并声明将始终使用!
进行定义:
fileName
.split('/')
.pop()!
.replace(/\.\w+$/, '')
(实际上并不是那么粗体,因为拆分空字符串将始终至少返回包含该空字符串的数组,因此pop应该解析为一个元素。)
可变支票看起来像这样:
const last = fileName
.split('/')
.pop();
if (last == undefined)
throw Error("This has never happened before.")
// Compiler now will 'know' that last is a string.
camelCase(last.replace(/\.\w+$/, ''));