Closed
Description
Before You File a Bug Report Please Confirm You Have Done The Following...
- I'm using eslint-plugin-svelte. (
*.svelte
file linting does not work with the parser alone. You should also use eslint-plugin-svelte with it.) - I'm sure the problem is a parser problem. (If you are not sure, search for the issue in eslint-plugin-svelte repo and open the issue in eslint-plugin-svelte repo if there is no solution.
- I have tried restarting my IDE and the issue persists.
- I have updated to the latest version of the packages.
What version of ESLint are you using?
8.23.0
What version of eslint-plugin-svelte
and svelte-eslint-parser
are you using?
What did you do?
Configuration
tsconfig.json
{
"extends": "@tsconfig/svelte/tsconfig.json",
"compilerOptions": {
"target": "ESNext",
"useDefineForClassFields": true,
"module": "ESNext",
"resolveJsonModule": true,
"baseUrl": ".",
/**
* Typecheck JS in `.svelte` and `.js` files by default.
* Disable checkJs if you'd like to use dynamic types in JS.
* Note that setting allowJs false does not prevent the use
* of JS in `.svelte` files.
*/
"allowJs": true,
"checkJs": true,
"isolatedModules": true,
"strict": true
},
"include": ["src/**/*.d.ts", "src/**/*.ts", "src/**/*.js", "src/**/*.svelte"],
"references": [{ "path": "./tsconfig.node.json" }]
}
.eslintrc.js
module.exports = {
parser: '@typescript-eslint/parser',
env: {
es6: true,
browser: true,
},
parserOptions: {
tsconfigRootDir: __dirname,
project: ['./tsconfig.json'],
extraFileExtensions: ['.svelte'],
parser: '@typescript-eslint/parser',
},
plugins: ['@typescript-eslint', 'import'],
ignorePatterns: [
'node_modules',
'.eslintrc.js',
'*.config.js',
'*.config.ts',
],
extends: [
'eslint:recommended',
'plugin:svelte/recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/recommended-requiring-type-checking',
],
overrides: [
{
files: ['*.svelte'],
parser: 'svelte-eslint-parser',
parserOptions: {
parser: '@typescript-eslint/parser',
},
},
],
settings: {
'import/resolver': {
typescript: {},
},
},
};
<script lang="ts">
import type { EventInfo } from './types'
let info: EventInfo | null = null
const lightFormat = (i: Date | number) => i.toString()
fetch('/fakeurl').then(() => { info = { start_at: 0 } }).catch(console.error)
$: startDate = (info?.start_at ? lightFormat(info.start_at) : null)
const endDate = () => (info?.start_at ? lightFormat(info.start_at) : null)
</script>
<input type='text'/>
What did you expect to happen?
No lint error.
What actually happened?
Get Unsafe argument of type
anyassigned to a parameter of type
number | Date``
Link to Minimal Reproducible Example
https://stackblitz.com/edit/vitejs-vite-up2dfg?file=src/App.svelte
Additional comments
only happen when strict: true
in tsconfig.json and plugin:@typescript-eslint/recommended-requiring-type-checking
in .eslintrc.js
Metadata
Metadata
Assignees
Labels
No labels