#typescript #gatsby #styled-components #tsconfig #.d.ts
Вопрос:
Я не мог найти никакого решения для этой проблемы в Интернете. До того, как я добавил gatsby-plugin-resolve-src
в свой проект «Гэтсби», все работало так, как ожидалось.
Чтобы добавить gatsby-plugin-resolve-src
в проект, в документах говорится, что в tsconfig.json следует добавить следующее
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"*": [
"types/*",
"*"
]
}
},
}
И это действительно работает, но styled-components
больше не признается.
import styled, {css} from 'styled-components'
бросает это-
импорт в стиле Это выражение не вызывается. ts(2349)
Модуль «стилизованные компоненты» не имеет экспортированного элемента «css». ts(2305)
Поэтому, если я закомментирую добавленные реквизиты в tsconfig.json, все вернется в рабочее состояние, но плагин не работает.
Я думаю, что причина, по которой это относится styled-components
только к одному, заключается в том, что у меня есть файл пользовательского определения для него.
src/типы/стиль-компоненты.d.ts
import 'styled-components';
declare module 'styled-components' {
export interface DefaultTheme {
primary: string;
secondary: string;
.....
}
}
Это мой полный tsconfig-
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"jsx": "preserve",
"lib": ["dom", "es2015", "es2017"],
"strict": true,
"noEmit": true,
"isolatedModules": true,
"esModuleInterop": true,
"skipLibCheck": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"removeComments": false,
"baseUrl": "./src",
"paths": {
"*": ["types/*", "*"]
}
},
"include": ["./src/**/*"],
"exclude": ["/node_modules/"]
}
Как мне решить эту проблему?
Ответ №1:
Почему бы вам просто не использовать определения styled-components
типов?
npm i styled-components
npm i @types/styled-components --save-dev
Можете ли вы поделиться образцом репозитория, чтобы лучше видеть необходимые пути и зависимости?
Комментарии:
1. Я уже использую @types. Я уверен, что проблема заключается в том, как я использую файл декларации. Происходят две вещи — 1. Если применить два свойства tsconfig (для использования плагина resolve), типы для
styled-components
не работают. 2. Типы по умолчанию работают, если я удаляю.d.ts
файл. Таким образом, необходимо исправить либо свойства tsconfig, либо файл d.ts.