다음 코드를 사용하십시오.TypeScript duck typing : 하나의 속성 만 필요합니다.
interface ParamTest extends Object {
ids?: any;
model?: any;
params?: any;
pageContext?: PageContext;
}
class Foo {
public callMeWithParamsPlease(params: ParamTest): void{
}
public nope() {
this.callMeWithParamsPlease("hi");
}
}
매개 변수로 제공 될 내용을 알지 못합니다. 그러나 나는 적어도 하나는 필드를 채워야한다는 것을 알고 있습니다. 내가 사용하는 경우 :
export interface ApiServiceOpts extends Object {
ids?: any;
model?: any;
params?: any;
pageContext: PageContext;
}
를 그 다음은 예상대로, 더 이상 문자열과 호환 없습니다 - 문자열이 pageContext
이 없기 때문에. 그러나 나는 pageContext가 제공 될지 확실히 알지 못합니다. 그러나 적어도 하나의 필드를 제공해야한다는 것을 알고 있습니다. 이것을 허용하는 마법 타이프 스크립트 문법이 있습니까?
어쩌면 다음과 같습니다.
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")
}
}
당신이 요구하는지 분명하지 않다. ''더 이상 문자열과 호환되지 않습니다. ''- 문자열과 호환되는 시점은 언제입니까?이 "it"입니까? 귀하의 코드에서 문자열 매개 변수가있는 곳은 없습니다. 또한, 왜'Object'를 확장하겠습니까? –