forked from sheetjs/sheetjs
		
	
		
			
	
	
		
			72 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			72 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | # TypeScript
 | ||
|  | 
 | ||
|  | The library exports can be imported directly from TS code with: | ||
|  | 
 | ||
|  | ```typescript | ||
|  | import * as XLSX from 'xlsx'; | ||
|  | ``` | ||
|  | 
 | ||
|  | The library type definitions are available in the repo at `types/index.d.ts` and | ||
|  | in the node module.  The definitions are also available in places that serve the | ||
|  | node module, like [unpkg](https://unpkg.com/xlsx/types/index.d.ts). | ||
|  | 
 | ||
|  | This demo shows a small utility function that reads the first worksheet and | ||
|  | converts to an array of arrays.  The utility function is designed to be used in | ||
|  | the browser and server.  This project shows a complete deployment as a simple | ||
|  | browser script and as a node module. | ||
|  | 
 | ||
|  | This demo is intended to illustrate simple and direct use of the `tsc` command | ||
|  | line utility.  The Angular 2+ demo shows a more advanced TypeScript deployment. | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Named Exports
 | ||
|  | 
 | ||
|  | Newer TypeScript versions (2.6+) support named exports: | ||
|  | 
 | ||
|  | ```typescript | ||
|  | import { read, write, utils } from 'xlsx' | ||
|  | ``` | ||
|  | 
 | ||
|  | However, since this is not supported in all deployments, it is generally easier | ||
|  | to use the glob import form and destructuring assignment: | ||
|  | 
 | ||
|  | ```typescript | ||
|  | import * as XLSX from 'xlsx'; | ||
|  | const { read, write, utils } = XLSX; | ||
|  | ``` | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Library Type Definitions
 | ||
|  | 
 | ||
|  | Types are exposed in the node module directly in the path `/types/index.d.ts`. | ||
|  | [unpkg CDN includes the definitions](https://unpkg.com/xlsx/types/index.d.ts). | ||
|  | The named `@types/xlsx` module should not be installed! | ||
|  | 
 | ||
|  | Using the glob import, types must be explicitly scoped: | ||
|  | 
 | ||
|  | ```typescript | ||
|  | import * as XLSX from 'xlsx'; | ||
|  | /* the workbook type is accessible as XLSX.WorkBook */ | ||
|  | const wb: XLSX.WorkBook = XLSX.read(data, options); | ||
|  | ``` | ||
|  | 
 | ||
|  | Using named imports, the explicit type name should be imported: | ||
|  | 
 | ||
|  | ```typescript | ||
|  | import { read, WorkBook } from 'xlsx' | ||
|  | const wb: WorkBook = read(data, options); | ||
|  | ``` | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Demo Project Structure
 | ||
|  | 
 | ||
|  | `lib/index.ts` is the TS library that will be transpiled to `dist/index.js` and | ||
|  | `dist/index.d.ts`. | ||
|  | 
 | ||
|  | `demo.js` is a node script that uses the generated library. | ||
|  | 
 | ||
|  | `src/index.js` is the browser entry point.  The `browserify` bundle tool is used | ||
|  | to generate `dist/browser.js`, a browser script loaded by `index.html`. | ||
|  | 
 | ||
|  | [](https://github.com/SheetJS/js-xlsx) |