fix(ref-transform): should transform $ref when used with generic arguments (#4446)
fix #4442
This commit is contained in:
parent
a6e6253319
commit
33cf6c8866
@ -42,6 +42,22 @@ return { foo, a, b, c, d }
|
|||||||
}"
|
}"
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`sfc ref transform usage /w typescript 1`] = `
|
||||||
|
"import { ref as _ref, defineComponent as _defineComponent } from 'vue'
|
||||||
|
|
||||||
|
export default _defineComponent({
|
||||||
|
setup(__props, { expose }) {
|
||||||
|
expose()
|
||||||
|
|
||||||
|
let msg = _ref<string | number>('foo');
|
||||||
|
let bar = _ref <string | number>('bar');
|
||||||
|
|
||||||
|
return { msg, bar }
|
||||||
|
}
|
||||||
|
|
||||||
|
})"
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`sfc ref transform usage in normal <script> 1`] = `
|
exports[`sfc ref transform usage in normal <script> 1`] = `
|
||||||
"import { ref as _ref } from 'vue'
|
"import { ref as _ref } from 'vue'
|
||||||
|
|
||||||
|
@ -99,6 +99,19 @@ describe('sfc ref transform', () => {
|
|||||||
assertCode(content)
|
assertCode(content)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('usage /w typescript', () => {
|
||||||
|
const { content } = compileWithRefTransform(`
|
||||||
|
<script setup lang="ts">
|
||||||
|
let msg = $ref<string | number>('foo');
|
||||||
|
let bar = $ref <string | number>('bar');
|
||||||
|
</script>
|
||||||
|
`)
|
||||||
|
expect(content).toMatch(`import { ref as _ref`)
|
||||||
|
expect(content).toMatch(`let msg = _ref<string | number>('foo')`)
|
||||||
|
expect(content).toMatch(`let bar = _ref <string | number>('bar')`)
|
||||||
|
assertCode(content)
|
||||||
|
})
|
||||||
|
|
||||||
test('usage with normal <script> + <script setup>', () => {
|
test('usage with normal <script> + <script setup>', () => {
|
||||||
const { content, bindings } = compileWithRefTransform(`<script>
|
const { content, bindings } = compileWithRefTransform(`<script>
|
||||||
let a = $ref(0)
|
let a = $ref(0)
|
||||||
|
@ -25,7 +25,7 @@ import { babelParserDefaultPlugins } from '@vue/shared'
|
|||||||
const TO_VAR_SYMBOL = '$'
|
const TO_VAR_SYMBOL = '$'
|
||||||
const TO_REF_SYMBOL = '$$'
|
const TO_REF_SYMBOL = '$$'
|
||||||
const shorthands = ['ref', 'computed', 'shallowRef']
|
const shorthands = ['ref', 'computed', 'shallowRef']
|
||||||
const transformCheckRE = /[^\w]\$(?:\$|ref|computed|shallowRef)?\(/
|
const transformCheckRE = /[^\w]\$(?:\$|ref|computed|shallowRef)?\s*(\(|\<)/
|
||||||
|
|
||||||
export function shouldTransform(src: string): boolean {
|
export function shouldTransform(src: string): boolean {
|
||||||
return transformCheckRE.test(src)
|
return transformCheckRE.test(src)
|
||||||
|
Loading…
Reference in New Issue
Block a user