diff --git a/packages/code-generator/src/utils/compositeType.ts b/packages/code-generator/src/utils/compositeType.ts index 81c0a1c81..cc8342777 100644 --- a/packages/code-generator/src/utils/compositeType.ts +++ b/packages/code-generator/src/utils/compositeType.ts @@ -34,7 +34,8 @@ function generateObject(value: CompositeObject, scope: IScope, options: Composit } function generateString(value: string): string { - return `'${value}'`; + // 有的字符串里面会有特殊字符,比如换行或引号之类的,这里我们借助 JSON 的字符串转义功能来做下转义并加上双引号 + return JSON.stringify(value); } function generateNumber(value: number): string { diff --git a/packages/code-generator/test/utils/compositeType.test.ts b/packages/code-generator/test/utils/compositeType.test.ts new file mode 100644 index 000000000..59ce23234 --- /dev/null +++ b/packages/code-generator/test/utils/compositeType.test.ts @@ -0,0 +1,20 @@ +import test from 'ava'; +import { generateCompositeType } from '../../src/utils/compositeType'; +import Scope from '../../src/utils/Scope'; + +test('single line string', (t) => { + t.is(generateCompositeType('ab c', Scope.createRootScope()), '"ab c"'); +}); + +test('multi line string', (t) => { + t.is(generateCompositeType('a\nb\nc', Scope.createRootScope()), '"a\\nb\\nc"'); +}); + + +test('string with single quote', (t) => { + t.is(generateCompositeType('a\'bc', Scope.createRootScope()), '"a\'bc"'); +}); + +test('string with double quote', (t) => { + t.is(generateCompositeType('a"bc', Scope.createRootScope()), '"a\\"bc"'); +});