๋ฌธ์ ๋ฅผ ์ ์ถํ๊ธฐ ์ ์ ๋จผ์ ๋ค์ ์ฌํญ์ ํ์ธํ์ญ์์ค.
์ด๊ฒ์ ์๋ง๋ ์๋ฃจ์
์ ๋ ๋นจ๋ฆฌ ์ป๋ ๋ฐ ๋์์ด ๋ ๊ฒ์
๋๋ค.
๋ฒ๊ทธ์ ๊ฒฝ์ฐ ์คํจํ ํ
์คํธ ์ผ์ด์ค์ ํจ๊ป 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์์ ์ถ์๋จ