簡體   English   中英

類型平台中的角度私有,但類型中沒有

[英]Angular private in type Platform but not in type

我對我遇到的錯誤有點困惑。

在我的項目中將我的 angular 版本升級到 v10 后,我遇到了以下問題:

這是我之前運行良好的代碼:

import { Platform } from '@angular/cdk/platform';

const platform: Platform = {
            isBrowser: false,
            TRIDENT: false,
            EDGE: false,
            WEBKIT: false,
            IOS: false,
            BLINK: false,
            FIREFOX: false,
            SAFARI: false,
            ANDROID: false
        }

我在規范測試中的beforeEach中執行上述操作,並將platform的值傳遞給函數。

但是,然后我收到了錯誤:

Property '_platformId' is missing in type '{ isBrowser: false; TRIDENT: false; EDGE: false; WEBKIT: false; IOS: false; BLINK: false; FIREFOX: false; SAFARI: false; ANDROID: false; }' but required in type 'Platform'

我認為這一定是較新版本的 angular 的新要求,所以我更新如下:

        const platform: Platform = {
            isBrowser: false,
            TRIDENT: false,
            EDGE: false,
            WEBKIT: false,
            IOS: false,
            BLINK: false,
            FIREFOX: false,
            SAFARI: false,
            ANDROID: false,
            _platformId: null,
        }

但是,現在我遇到了這個問題:

Property '_platformId' is private in type 'Platform' but not in type '{ isBrowser: false; TRIDENT: false; EDGE: false; WEBKIT: false; IOS: false; BLINK: false; FIREFOX: false; SAFARI: false; ANDROID: false; _platformId: null; }'

有什么辦法可以解決這個問題嗎? 我必須在其他地方設置_platformId嗎?

平台是一個類,而不是一個接口,接口不能有私有成員。

您可以從構造函數參數創建Platform實例:

constructor(public platform: Platform) {}

或在您的邏輯中:

const p = new Platform("platformID");

然后像以前一樣設置屬性。

所以這“有效”,但肯定必須有一種更整潔的方式?

let platform1 = new Platform(1);
platform1.isBrowser = false;
platform1.TRIDENT = false;
platform1.EDGE = false;
platform1.WEBKIT = false;
platform1.IOS = false;
platform1.BLINK = false;
platform1.FIREFOX = false;
platform1.SAFARI = false;
platform1.ANDROID = false;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM