angular - TS1086:无法在环境上下文中声明访问器
问题描述
在初始实施后,我有成千上万个这样的错误,在终端 ng serve my-app of 中输入,我无法解决它。这对我来说是第一次,当我在 angular 内部遇到这样的问题时,打字稿错误看起来像这样:
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:24:19 中的错误 - 错误 TS1086:无法在环境上下文中声明访问器。
24 protected get parentElement(): HTMLElement | null; ~~~~~~~~~~~~~ ../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:26:19
- 错误 TS1086:无法在环境上下文中声明访问器。
26 protected get nativeElement(): HTMLElement; ~~~~~~~~~~~~~ ../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:28:9
- 错误 TS1086:无法在环境上下文中声明访问器。
28 get activatedValue(): string; ~~~~~~~~~~~~~~ ../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:29:9
- 错误 TS1086:无法在环境上下文中声明访问器。
29 set activatedValue(value: string); ~~~~~~~~~~~~~~ ../../node_modules/@angular/flex-layout/core/typings/breakpoints/break-point-registry.d.ts:20:9
- 错误 TS1086:无法在环境上下文中声明访问器。
[...]
有人知道原因吗?在我修复它之前,我无法测试我的应用程序。
更新 1
好的,我让它前进。大多数错误都消失了,但我现在很少,例如第一个:
src/app/main/main.component.ts:143:63 中的错误 - 错误 TS2322: 类型 'string | undefined' 不能分配给类型 'string'。类型“未定义”不可分配给类型“字符串”。
143 this.fileService.add({ isFolder: true, name: folder.name, parent: this.currentRoot ? this.currentRoot.id : 'root' });
代码如下所示:
main.component.ts:
currentRoot: MpFileElement = new MpFileElement();
...
addFolder(folder: { name: string }) {
this.fileService.add({ isFolder: true, name: folder.name, parent:
this.currentRoot ? this.currentRoot.id : 'root' });
this.updateFileElementQuery();
}
...
文件.service.ts:
import { Injectable } from '@angular/core';
import { v4 } from 'uuid';
import { MpFileElement } from '../models/mp-file-element.model';
import { Observable } from 'rxjs/internal/Observable';
import { BehaviorSubject } from 'rxjs';
export interface IFileService {
add(fileElement: MpFileElement);
delete(id: string);
update(id: string, update: Partial<MpFileElement>);
queryInFolder(folderId: string): Observable<MpFileElement[]>;
get(id: string): MpFileElement;
}
@Injectable()
export class MpFileService implements IFileService {
constructor() {}
private map = new Map<string, MpFileElement>()
private querySubject: BehaviorSubject<MpFileElement[]>;
add(fileElement: MpFileElement) {
fileElement.id = v4();
this.map.set(fileElement.id, this.clone(fileElement));
return fileElement;
}
delete(id: string) {
this.map.delete(id);
}
update(id: string, update: Partial<MpFileElement>) {
let element = this.map.get(id);
element = Object.assign(element, update);
this.map.set(element.id, element);
}
queryInFolder(folderId: string) {
const result: MpFileElement[] = [];
this.map.forEach(element => {
if (element.parent === folderId) {
result.push(this.clone(element));
}
})
if (!this.querySubject) {
this.querySubject = new BehaviorSubject(result);
} else {
this.querySubject.next(result);
}
return this.querySubject.asObservable();
}
get(id: string) {
return this.map.get(id);
}
clone(element: MpFileElement) {
return JSON.parse(JSON.stringify(element));
}
}
解决方案
设置解决"skipLibCheck": true
了tsconfig.json
我的问题
"compilerOptions": {
"skipLibCheck": true
}
推荐阅读
- javascript - 我们何时以及如何需要使用“未定义”作为值?
- python - Firebase Admin SDK:list_users() 错误 INSUFFICIENT_PERMISSION
- python - Django python在开发上渲染但不在生产上
- bash - 我希望能够从一行中提取两个不同的序列
- python - 我想将我的文本抓取程序部署到 Heroku,但它使用的文件存储在我的 PC 上
- android - 更改虚拟 Android 设备的 Wifi 名称
- ruby-on-rails - 是否可以使用 ActiveAdmin 以便管理员用户可以编辑邮件模板?
- elixir - 找不到 GET /media/image_test.png 的路由
- sql - 结果未过滤
- asp.net-core - 在不阻塞 UI 的情况下延迟 Blazor 中的任务