問題を提出する前に、まず次の点を確認してください。
これはおそらく、解決策をより早く得るのに役立ちます。
バグについては、テストケースが失敗したPRがあると便利です。
現在、 Handlebarのtypescript定義では、 knownHelper
オプションでカスタムヘルパーを指定することはできません。
したがって、カスタムヘルパーでknownHelpersOnly
オプションを使用するには、タイプスクリプトチェックをバイパスするためにknownHelpers
をキャストする必要があります。
function given(...args: any[]): string {
const options = args.pop();
if (options.fn) {
let complete = true;
const proxy = new Proxy(this, {
get(context, prop: string): object {
if (!(prop in context)) {
complete = false;
}
return context[prop];
},
});
const text = options.fn(proxy);
return complete ? text : '';
}
return args.some((a: string): boolean => !a) ? '' : args.join(' ');
}
const templateOptions = {
helpers: {
first,
},
};
const compilerOptions = {
knownHelpers: { first: true } as unknown, // Without this `unknown` compilation fails
knownHelpersOnly: true,
};
Hanblebars.compile('My nice template {{first "text"}}', compilerOptions)({}, templateOptions);
生成されたエラー( unknown
キャストを使用しない場合)は次のとおりです。
TypeScript diagnostics (customize using `[jest-config].globals.ts-jest.diagnostics` option):
src/index.test.ts:93:41 - error TS2345: Argument of type '{ knownHelpers: { first: boolean; }; knownHelpersOnly: boolean; }' is not assignable to parameter of type 'CompileOptions'.
Types of property 'knownHelpers' are incompatible.
Type '{ first: boolean; }' has no properties in common with type '{ helperMissing?: boolean; blockHelperMissing?: boolean; each?: boolean; if?: boolean; unless?: boolean; with?: boolean; log?: boolean; lookup?: boolean; }'.
CompilerOptions
には次の定義を含めるべきではありませんか?:
interface CompileOptions {
data?: boolean;
compat?: boolean;
knownHelpers?: { [name: string]: boolean };
knownHelpersOnly?: boolean;
noEscape?: boolean;
strict?: boolean;
assumeObjects?: boolean;
preventIndent?: boolean;
ignoreStandalone?: boolean;
explicitPartialContext?: boolean;
}
(私は何かを得ていませんか?。これが正しい修正である場合、私はPRを送信するつもりです)
申し出に感謝。 少し異なる修正をプッシュしました。 IDEの組み込みヘルパーの適切なオートコンプリートを取得するには、組み込み名を保持し、それでも他の名前を許可する方がよいと思います。
迅速な修正をありがとう! どのバージョンでリリースされますか?
次のパッチバージョン。 私はそれをするのに良い時期は何だろうと考えています。 次のリリースのために火曜日を計画しています。
4.2.0でリリース