雖然我在整個人生中使用了許多不同情況下的可觀察模式,但我很難在RxJS Observables裏找到自己的頭。下面是一些代碼:RxJs Observable <string> vs Observable <string[]>
const observable: Observable<Response> = createdElswhere();
let test1: Observable<string>;
let test2: Observable<string[]>;
test1 = observable.map(r => r.json());
test2 = observable.map(r => r.json());
Response.json()返回數據數組 - 通常是將被映射到一個打字稿對象的對象,但他們只是在這種情況下字符串:
[
"test1",
"test2",
"test3",
"test4"
]
當我訂閱test1
或test2
屬性(在角度視圖模板中,或者在代碼中使用.subscribe()
進行手動)時,可觀察的泛型類型似乎對框架沒有任何影響。即使observable內部的'data'不同(一個是數組,另一個是可觀察字符串的數組),項目顯示完全相同。
任何人都可以解釋Observable<string>
和Observable<string[]>
之間的區別,並舉例說明他們應如何使用?
如果事件返回一個字符串數組,則應該使用;如果事件返回一個字符串數組,則返回。在這種情況下,您的observable似乎正在返回一個字符串數組。重要的是響應包含的內容。 :) –
toskv
這是我的想法。然而,我所有的觀測數據被定義爲Observable(而不是Observable ,但是我所有的數據都是作爲數組從後端返回的;我沒有收到TS警告,並且任何訂閱代碼似乎都不關心我定義它 –
Spikeh
你定義的類型只在編譯時,運行時所有的類型信息都會丟失,服務器返回的結果應該是你的observable的類型,你寫的類型在那裏描述,他們沒有強制它。我認爲這裏的問題是,你只是輸入你的觀察錯誤 – toskv