次のコードでは、TypeScriptダックタイピング:1つのプロパティのみを要求する
interface ParamTest extends Object {
ids?: any;
model?: any;
params?: any;
pageContext?: PageContext;
}
class Foo {
public callMeWithParamsPlease(params: ParamTest): void{
}
public nope() {
this.callMeWithParamsPlease("hi");
}
}
私はパラメータとして何が提供されるのかわかりません。しかし、私は、少なくとも1つはのフィールドを埋める必要があることを知っています。私が使用している場合:
export interface ApiServiceOpts extends Object {
ids?: any;
model?: any;
params?: any;
pageContext: PageContext;
}
予想通りその後、それは、もはや文字列と互換性がありません - 文字列がpageContext
を持っていないため。しかし、私はpageContextが供給されるかどうかはわかりませんが、少なくとも1つのフィールドを提供する必要があることはわかっています。これを可能にする魔法のタイコスクリプト構文はありますか?
多分次のようなものです。
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")
}
}
それはあなたが求めているものは明らかではありません。 ''それはもはや文字列 ''と互換性がなくなりました - いつ文字列と互換性があったのでしょうか、これは何ですか?あなたのコードのどこに文字列パラメータがあるのですか?また、なぜ 'Object'を拡張しますか? –