我收到一个奇怪的错误TS2339:类型“ Y”上不存在属性“ X”。我该如何解决?
我已将库添加到我的“ 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”。
我希望
但是打字稿说他们没有。
答案 0 :(得分:0)
您的目标是 es3,但已告诉 TS,它拥有所有可用的最前沿的库。没有 polyfills,这是一个真的坏主意。
TS 将不会在功能上polyfill。它只添加了语法 polyfill。所以你是在给自己设陷阱。删除 lib 条目,将您的目标更新为现代目标,或为其中的所有内容添加 polyfill。
另外,如上所述,我希望你的 tsconfig 是 tsconfig.json,而不是 tsconfig.jsonc。否则就是你的问题。