问题
When i npm install this library into my cli project and try to reference the types within it i get this:
error TS2306: File 'C:/ng-ikr-lib-test/node_modules/@types/fhir/index.d.ts' is not a module.
Here is my tsconfig:
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}
and my app tsconfig which extends the above.
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"module": "es2015",
"types": ["fhir"]
},
"exclude": [
"src/test.ts",
"**/*.spec.ts"
]
}
How are you supposed to use the types defined in this library in an angular-cli app?
https://www.npmjs.com/package/@types/fhir
回答1:
The easiest way I've found is to reference the types with the following line at the top of your file:
///<referencepath="../../../node_modules/@types/fhir/index.d.ts"/>
For example, the references at the top of my fhir.service.ts file look like this:
///<reference path="../../../../node_modules/@types/fhir/index.d.ts"/>
import {Injectable} from '@angular/core';
import {Observable, throwError} from 'rxjs';
import {HttpClient, HttpHeaders, HttpParams} from '@angular/common/http';
import Patient = fhir.Patient;
import Observation = fhir.Observation;
import Bundle = fhir.Bundle;
import Medication = fhir.Medication;
You can find out more background information at https://www.typescriptlang.org/docs/handbook/declaration-files/library-structures.html under the "Consuming Dependencies" section.
回答2:
If others stumble upon this, I published a repackaged version of this library to the public npm registry. You can find it here:
https://www.npmjs.com/package/fhir-stu3
Cheers.
来源:https://stackoverflow.com/questions/51661818/how-do-i-use-types-fhir-in-angular-cli-project