coordtransform
coordtransform copied to clipboard
Add TypeScript support with full backward compatibility
This PR converts the coordtransform library to TypeScript while maintaining 100% backward compatibility with existing JavaScript usage patterns.
Changes Made
TypeScript Implementation
- Added complete TypeScript source code in
src/index.tswith proper type definitions - Introduced
Coordinatetype alias ([number, number]) for better type safety - Generated UMD-compatible JavaScript output that maintains original browser behavior
- Added comprehensive type definitions (
.d.tsfiles) for IDE IntelliSense support
Enhanced Package Configuration
- Updated
package.jsonwith dual exports supporting both CommonJS and ES modules - Added TypeScript build scripts and development dependencies
- Configured proper type definitions paths for package consumers
Comprehensive Testing
- All existing JavaScript tests continue to pass with identical results
- Added TypeScript-specific tests covering ES6 imports and type checking
- Created browser compatibility tests verifying UMD global behavior
- Added comprehensive test suite validating all import patterns
Documentation Updates
- Enhanced README with TypeScript usage examples
- Added examples for ES6 imports, default imports, and CommonJS patterns
- Maintained existing documentation for JavaScript users
Usage Examples
New TypeScript Features
// ES6 named imports with types
import { bd09togcj02, Coordinate } from 'coordtransform';
const result: Coordinate = bd09togcj02(116.404, 39.915);
// ES6 default import
import coordtransform from 'coordtransform';
const result = coordtransform.bd09togcj02(116.404, 39.915);
Existing JavaScript Usage (Unchanged)
// CommonJS (continues to work)
const coordtransform = require('coordtransform');
const result = coordtransform.bd09togcj02(116.404, 39.915);
// Browser globals (continues to work)
// <script src="index.js"></script>
const result = coordtransform.bd09togcj02(116.404, 39.915);
Backward Compatibility
This implementation maintains complete compatibility:
- ✅ All existing CommonJS
require()patterns work unchanged - ✅ Browser script tag usage continues to expose
coordtransformglobal - ✅ AMD/RequireJS compatibility preserved
- ✅ All coordinate transformation functions produce identical numerical results
- ✅ Original
index.jsremains untouched and functional
Benefits
- Type Safety: Full TypeScript support with proper type definitions
- Modern Imports: Support for ES6 import/export syntax
- Developer Experience: IntelliSense and autocomplete in TypeScript-aware IDEs
- Zero Breaking Changes: Existing users can upgrade without code modifications
- Future-Proof: Ready for modern JavaScript toolchains while supporting legacy usage
The library now serves both JavaScript and TypeScript developers while maintaining its proven reliability for coordinate system transformations.
Original prompt
按照 node 的 typescript 规范将这个工具库改成 ts 版本的,需要兼容之前的使用方式
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.