Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion lib/rules/valid-v-model.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,12 @@ function isOptionalChainingMemberExpression(node) {
* @returns {boolean} `true` if the node can be LHS.
*/
function isLhs(node) {
return node.type === 'Identifier' || node.type === 'MemberExpression'
return (
node.type === 'Identifier' ||
node.type === 'MemberExpression' ||
node.type === 'TSAsExpression' ||
node.type === 'TSNonNullExpression'
)
}

/**
Expand Down
18 changes: 18 additions & 0 deletions tests/lib/rules/valid-v-model.js
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,24 @@ tester.run('valid-v-model', rule, {
{
filename: 'comment-value.vue',
code: '<template><MyComponent v-model="/**/" /></template>'
},
{
filename: 'test.vue',
code: '<template><MyComponent v-model="a as string"></MyComponent></template>',
languageOptions: {
parserOptions: {
parser: require.resolve('@typescript-eslint/parser')
}
}
},
{
filename: 'test.vue',
code: '<template><MyComponent v-model="a!"></MyComponent></template>',
languageOptions: {
parserOptions: {
parser: require.resolve('@typescript-eslint/parser')
}
}
}
],
invalid: [
Expand Down
6 changes: 6 additions & 0 deletions typings/eslint-plugin-vue/util-types/ast/ts-ast.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import * as ES from './es-ast'
import { TSESTree } from '@typescript-eslint/types'
export type TSNode =
| TSAsExpression
| TSNonNullExpression
| TSTypeParameterInstantiation
| TSPropertySignature
| TSMethodSignatureBase
Expand All @@ -20,6 +21,11 @@ export interface TSAsExpression extends HasParentNode {
typeAnnotation: any
}

export interface TSNonNullExpression extends HasParentNode {
type: 'TSNonNullExpression'
expression: ES.Expression
}

export interface TSTypeParameterInstantiation extends HasParentNode {
type: 'TSTypeParameterInstantiation'
params: TypeNode[]
Expand Down