Skip to content

Conversation

Copy link

Copilot AI commented Dec 12, 2025

Migrates all JavaScript files in src/ to TypeScript while preserving existing behavior and test compatibility.

Migration approach

  • Type definitions: Leverages types from cheminfo-types, ml-spectra-processing, and jcampconverter dependencies
  • TSDoc conversion: Replaces JSDoc with proper TypeScript interfaces and type annotations
  • Type safety: Adds type assertions where NumberArray/DoubleArray conversions are needed
  • Default values: Documents defaults in interface definitions (e.g., @default '\t')

Files migrated

  • Core: Kinds.ts, SpectraProcessor.ts, index.ts
  • Parsers: parseText.ts, parseMatrix.ts, parseJcamp.ts
  • Spectra processing: getMeanData.ts, getNormalizedData.ts, getPostProcessedData.ts, etc.
  • Metadata: getMetadata.ts, getClasses.ts, getClassLabels.ts, getCategoriesStats.ts
  • JSGraph utilities: getChart.ts, getBoxPlotChart.ts, getAutocorrelationChart.ts, etc.
  • Scaled operations: integration.ts, min.ts, max.ts, minMax.ts, getFromToIndex.ts

Example type improvements

Before (JSDoc):

/**
 * @param {string} text - String containing the JCAMP data
 * @param options
 * @returns {Spectrum} - new instance of Spectrum
 */
export default function parseText(value, options = {}) {
  const { kind, parserOptions = {} } = options;
  const data = parseXY(value, parserOptions);
  return { data };
}

After (TypeScript):

export interface ParseTextOptions {
  kind?: Kind;
  parserOptions?: any;
}

export interface ParseTextResult {
  data: DataXY;
}

export default function parseText(
  value: string,
  options: ParseTextOptions = {},
): ParseTextResult {
  const { kind, parserOptions = {} } = options;
  const data = parseXY(value, parserOptions);
  return { data };
}

Dependencies added

  • @types/chroma-js
  • @types/object-hash
Original prompt

This section details on the original issue you should resolve

<issue_title>Migrate to typescript</issue_title>
<issue_description>The setup is already done and we only need to migrate the src folder.

We should take care about types that are present in dependencies, especially ml-spectra-processing and cheminfo-types

We should take the opportunity to check the jsdoc and migrate to tsdoc.

We should not forget to add default values if they exists in the documentation of types.</issue_description>

Comments on the Issue (you are @copilot in this section)


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI changed the title [WIP] Migrate src folder to TypeScript Migrate src folder to TypeScript Dec 12, 2025
Copilot AI requested a review from lpatiny December 12, 2025 13:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate to typescript

2 participants