網站搜尋

javascript - Typescript 使用點號 (.) 運算子訪問包含特定物件的物件變數


我有一個 TypeScript 介面

interface BookStore {
    books: { [key: string]: Book }
}

我可以像這樣通過它的名字訪問一本書

BookStore.books['OneGoodBookName']

我需要的是使用句點 (.) 運算子來存取它

BookStore.books.OneGoodBookName

不幸的是,我無法做到這件事,而且互聯網到目前為止也沒有提供幫助。有人知道我是否可以做到嗎?

--

編輯 1:更多資訊

我不能改變實作。只能改變介面中的宣告,因為這是其他人用在他們的 Javascript 代碼中的函式庫宣告文件。我不想讓開發者在遷移到 TypeScript 時更改他們的 JS 代碼。

答案#1

你可以這樣訪問它:

var bs: BookStore;
//...
var book = <Book>((<any>bs.books).OneGoodBookName);

但在那種情況下,你將失去 TypeScript 提供的類型檢查: