Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
.d.ts файлы: TypeScript Declaration Files
Что это
.d.ts файлы (Declaration Files) это файлы которые содержат только типы TypeScript, без реализации. Используются для описания типов JavaScript библиотек или для распространения типов отдельно от кода.
Структура
// index.d.ts — только типы, ноCode
export interface User {
id: number;
name: string;
email: string;
}
export function getUser(id: number): Promise<User>;
export function createUser(name: string, email: string): Promise<User>;
export class UserService {
constructor(apiUrl: string);
fetchUser(id: number): Promise<User>;
}
Зачем нужны
- Типы для JavaScript библиотек
// jquery.d.ts
declare function $(selector: string): JQuery;
declare namespace $ {
function ajax(settings: AjaxSettings): void;
}
- Распространение типов отдельно
# npm install lodash
# npm install --save-dev @types/lodash
- Документирование API
// api.d.ts
export function calculatePrice(
quantity: number,
unitPrice: number,
discountPercent?: number
): number;
Создание собственных типов
// math.ts
export function add(a: number, b: number): number {
return a + b;
}
// При компиляции TypeScript создаёт:
// math.js (JavaScript код)
// math.d.ts (TypeScript типы)
// math.d.ts
export declare function add(a: number, b: number): number;
tsconfig.json для генерации .d.ts
{
"compilerOptions": {
"declaration": true,
"declarationDir": "./dist",
"emitDeclarationOnly": false,
"outDir": "./dist"
}
}
DefinitelyTyped
@types это пакеты на npm с типами для популярных библиотек
npm install --save-dev @types/node
npm install --save-dev @types/express
npm install --save-dev @types/react
Типичный package.json
{
"name": "my-library",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": [
"dist"
]
}
Namespace Declaration
// globals.d.ts
declare namespace MyApp {
interface Config {
apiUrl: string;
debug: boolean;
}
const config: Config;
function init(cfg: Config): void;
}
// Использование
MyApp.config.apiUrl = 'https://api.example.com';
MyApp.init(MyApp.config);
Triple-slash Directives
// /// <reference path="./other.d.ts" />
declare interface Window {
myGlobal: string;
}
Плюсы
✅ IDE автодополнение ✅ Type checking ✅ Документирование ✅ Распространение типов
Минусы
❌ Дополнительный файл ❌ Может устаревать ❌ Сложность для маленьких проектов
Когда создавать
✅ Библиотеки на npm ✅ Публичные API ✅ Большие проекты
❌ Маленькие скрипты ❌ Внутренние инструменты
Похожие вопросы
- Как работает асинхронность в Node.js?
- Как реализованы тесты на проекте?
- Для чего нужен Redis?
- Почему некоторые HTTP-методы должны быть идемпотентны?
- Как оптимизировать запросы к БД?
- Для чего используется Event Emitter в Node.JS?
- Почему Node.JS считается однопоточным ЯП?
- Что такое UDP?
- Что такое EventEmitter?
- Какие есть принципы у REST приложений?
- В чем разница между type и class в TypeScript?
- Какие утилиты чаще всего используешь в TypeScript?
- Для чего используется JSON Web Token?
- Из чего состоит Express.js
- Что такое Singleton?
- В чем разница между HAVING и WHERE в SQL?
- Расскажи про опыт работы с ORM
- Реализовывал ли авторизацию на Node.js
- Для чего используется Generic?
- Как реализовать rate limiting для защиты Node.js API от злоупотреблений?