我是 Typescript 新手,遇到問題定義
loadAnimation(params: AnimationConfigWithPath | AnimationConfigWithData): AnimationItem;
export type AnimationConfigWithPath = AnimationConfig & {
path?: string;
}
export type AnimationConfigWithData = AnimationConfig & {
animationData?: any;
}
export type AnimationConfig<T extends 'svg' | 'canvas' | 'html' = 'svg'> = {
container: Element;
renderer?: T;
}
我的代碼
lottie.loadAnimation({
container: document.getElementById("test1")!,
renderer: 'canvas', // Error: Type '"canvas"' is not assignable to type '"svg" | undefined'.
loop: true,
autoplay: true,
path: 'data.json'
})
錯誤:型別 '"canvas"' 不可分配給型別 '"svg" | 不明確的'。我想知道怎么寫?謝謝
uj5u.com熱心網友回復:
宣言
export type AnimationConfigWithPath = AnimationConfig & {
path?: string;
}
不向 傳遞型別引數AnimationConfig,這意味著使用默認值。所以renderer將永遠是 type 'svg'。
您可以向下傳遞通用引數以獲取所需的內容。
function loadAnimation<T>(params: AnimationConfigWithPath<T> | AnimationConfigWithData<T>): AnimationItem { ... }
export type AnimationConfigWithPath<T extends 'svg' | 'canvas' | 'html'> = AnimationConfig<T> & {
path?: string;
}
export type AnimationConfigWithData<T extends 'svg' | 'canvas' | 'html'> = AnimationConfig<T> & {
animationData?: any;
}
export type AnimationConfig<T extends 'svg' | 'canvas' | 'html' = 'svg'> = {
container: Element;
renderer?: T;
}
uj5u.com熱心網友回復:
這是什么通用的?這似乎毫無意義:
export type AnimationConfig<T extends 'svg' | 'canvas' | 'html' = 'svg'> = {
洗掉它可以解決問題:
export type AnimationConfig = {
container: Element;
renderer?: "svg" | "canvas" | "html";
}
如果您使用它是因為它具有“默認值”,那么型別沒有默認值。他們只是描述結構,而不是行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/428561.html
標籤:打字稿
上一篇:在本機反應中創建特定的時間范圍
下一篇:當TypeScriptarg的GraphQLarg指示可為空的true時,TypeScriptarg旁邊的問號是什么?
