我遇到了一个奇怪的错误TS2339:属性“X”在类型“Y”上不存在。我该如何解决?
我已经将库添加到我的“tsconfig.jsonc”文件中:
"compilerOptions": {
"target": "es3", // "es3" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */,
"watch": true,
"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,
"lib": [
"esnext",
"es2018",
"es2017",
"es2016",
"es2015",
"es7",
"es6",
"es5",
"dom",
"dom.iterable",
"ScriptHost"
] /* Specify library files to be included in the compilation. */,
...
}
代码
const userName: string = groupAddress.replace('@gmail.com', '')
返回错误。
类型“string”上不存在属性“replace”。
同样地,
const addMembers = (email: string, studio: string, role): void => {
const memberKey = email.trim()
返回
类型“string”上不存在属性“trim”。
const groupKeys: string[] = [
`report.${name}@gmail.com`,
`support.${name}@gmail.com`
]
groupKeys.forEach((groupKey: string) => {
if (!GroupsApp.getGroupByEmail(groupKey).hasUser(memberKey)) {
AdminDirectory.Members.insert({ email: memberKey, role }, groupKey)
}
})
返回
类型'{}'上不存在属性'forEach'。
我期望
- 字符串类型具有'replace'方法,以及
- 字符串数组类型具有'forEach'方法。
但typescript表示它们没有。
replace
方法(它是在该版本中添加的)。 - T.J. Crowder