Lab 12: Declaration Files
Step 1: Environment Setup
docker run -it --rm node:20-alpine sh
npm install -g typescript
mkdir lab12 && cd lab12
npm init -y
echo '{"compilerOptions":{"module":"commonjs","target":"es2020","strict":true,"esModuleInterop":true,"baseUrl":"."}}' > tsconfig.jsonStep 2: Basic declare module
# Simulate an untyped JS library
mkdir -p node_modules/myutils
cat > node_modules/myutils/index.js << 'EOF'
exports.formatDate = function(date, format) {
// ... simplified
return date.toISOString().split('T')[0];
};
exports.slugify = function(text) {
return text.toLowerCase().replace(/\s+/g, '-');
};
exports.chunk = function(arr, size) {
const chunks = [];
for (let i = 0; i < arr.length; i += size) chunks.push(arr.slice(i, i + size));
return chunks;
};
EOFStep 3: Global Augmentation
Step 4: Function Overload Signatures
Step 5: Namespace and Module Merging
Step 6: Namespace Declarations
Step 7: Publishing @types Packages
Step 8: Capstone — Full Declaration File Suite
Summary
Pattern
Syntax
Use Case
Last updated
