Avec le code suivant;Typage dactylographique de TypScript: Requiert une seule propriété
interface ParamTest extends Object {
ids?: any;
model?: any;
params?: any;
pageContext?: PageContext;
}
class Foo {
public callMeWithParamsPlease(params: ParamTest): void{
}
public nope() {
this.callMeWithParamsPlease("hi");
}
}
Je ne sais pas ce que je vais être fourni en tant que paramètre. Mais je sais que au moins un des champs doivent être remplis. Si j'utilise:
export interface ApiServiceOpts extends Object {
ids?: any;
model?: any;
params?: any;
pageContext: PageContext;
}
Ensuite, il est plus compatible avec la chaîne, comme prévu - parce que la chaîne n'a pas pageContext
. Cependant, je ne sais pas avec certitude si le pageContext sera fourni - mais je sais qu'au moins un des champs doit être fourni. Y a-t-il une syntaxe de type dactylographique magique qui permet cela?
Peut-être que quelque chose comme;
interface PageContext {}
export interface ParamTestId {
ids: any;
}
export interface ParamTestModel {
model: any;
}
export interface ParamTestParams {
params: any;
}
export interface ParamTestPageContext {
pageContext: PageContext;
}
class Foo {
public callMeWithParamsPlease(params: ParamTestId & ParamTestModel & ParamTestParams & ParamTestPageContext): void {
params.ids.a = "";
params.model.b = {}
}
public nope() {
this.callMeWithParamsPlease("hi")
}
}
On ne sait pas ce que vous demandez. '' il n'est plus compatible avec la chaîne '' - quand était-il compatible avec une chaîne, qu'est-ce que c'est "ça"? Non où dans votre code avez-vous un paramètre de chaîne. Aussi, pourquoi étendriez-vous 'Object'? –