2017-01-17 7 views
1

Я хочу использовать cdn для доступа к библиотеке проверки json, поскольку она должна быть немного быстрее, так как она получает файл с ближайшего доступного сервера в cdn.Получить типизацию, работающую при использовании CDN

Это библиотека проверки JSON:

https://github.com/epoberezkin/ajv#using-in-browser

Он направляет меня к этому CND:

https://cdnjs.com/libraries/ajv

Так что включать, что в моем HTML:

<html> 
<head> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/ajv/4.10.4/ajv.min.js" integrity="sha256-LtA3VfycAam30/5e2Fq1f2tg8eIiFMOVWp1NDd6jmUU=" crossorigin="anonymous"></script> 
</head> 

Теперь типографии ... Я побежал это: НПМ установить --save-DEV @ типов/AJV и установленные

node_modules/@types/ajv/package.json:

{ 
    "_args": [ 
    [ 
     { 
     "raw": "@types/ajv", 
     "scope": "@types", 
     "escapedName": "@types%2fajv", 
     "name": "@types/ajv", 
     "rawSpec": "", 
     "spec": "latest", 
     "type": "tag" 
     }, 
     "C:\\Users\\si556577\\Documents\\SSWebApp\\app\\Iag.DI.Web.SupplierApp" 
    ] 
    ], 
    "_from": "@types/[email protected]", 
    "_id": "@types/[email protected]", 
    "_inCache": true, 
    "_installable": true, 
    "_location": "/@types/ajv", 
    "_npmOperationalInternal": { 
    "host": "packages-12-west.internal.npmjs.com", 
    "tmp": "tmp/ajv-1.0.0.tgz_1482502603556_0.6872997884638608" 
    }, 
    "_npmUser": { 
    "name": "types", 
    "email": "[email protected]" 
    }, 
    "_phantomChildren": {}, 
    "_requested": { 
    "raw": "@types/ajv", 
    "scope": "@types", 
    "escapedName": "@types%2fajv", 
    "name": "@types/ajv", 
    "rawSpec": "", 
    "spec": "latest", 
    "type": "tag" 
    }, 
    "_requiredBy": [ 
    "#DEV:/", 
    "#USER" 
    ], 
    "_resolved": "https://registry.npmjs.org/@types/ajv/-/ajv-1.0.0.tgz", 
    "_shasum": "4fb2440742f2f6c30e7fb0797b839fc6f696682a", 
    "_shrinkwrap": null, 
    "_spec": "@types/ajv", 
    "_where": "C:\\Users\\si556577\\Documents\\SSWebApp\\app\\Iag.DI.Web.SupplierApp", 
    "author": "", 
    "bugs": { 
    "url": "https://github.com/epoberezkin/ajv/issues" 
    }, 
    "dependencies": { 
    "ajv": "*" 
    }, 
    "deprecated": "This is a stub types definition for ajv (https://github.com/epoberezkin/ajv). ajv provides its own type definitions, so you don't need @types/ajv installed!", 
    "description": "Stub TypeScript definitions entry for ajv, which provides its own types definitions", 
    "devDependencies": {}, 
    "directories": {}, 
    "dist": { 
    "shasum": "4fb2440742f2f6c30e7fb0797b839fc6f696682a", 
    "tarball": "https://registry.npmjs.org/@types/ajv/-/ajv-1.0.0.tgz" 
    }, 
    "homepage": "https://github.com/epoberezkin/ajv#readme", 
    "license": "MIT", 
    "main": "", 
    "maintainers": [ 
    { 
     "name": "types", 
     "email": "[email protected]" 
    } 
    ], 
    "name": "@types/ajv", 
    "optionalDependencies": {}, 
    "readme": "ERROR: No README data found!", 
    "repository": { 
    "type": "git", 
    "url": "git+https://github.com/epoberezkin/ajv.git" 
    }, 
    "scripts": {}, 
    "typings": null, 
    "version": "1.0.0" 
} 

и он также добавил это package.json:

"devDependencies": { 
    "@types/ajv": "^1.0.0", 

в коде я использую это так:

validateJSONSchema(json) { 
    var ajv = new Ajv(); 
    var valid = ajv.validate(this.schema, json); 
    if (!valid) { 
     console.log(ajv.errors); 
     return false; 
    } else { 
     return true; 
    } 
} 

код работает, однако в против кода я получаю время компиляции е rror: Не удается найти имя «Ajv»

Как я могу сделать свою работу? Я когда-либо использовал типизацию, когда я устанавливал пакет локально, а не использовал cdn. Могут ли типизироваться даже при использовании cdn?

ответ

1

Это отмечено в package.json файле ajv «s, что @types/ajv теперь осуждается и типизации включены в пакет iteself:

This is a stub types definition for ajv (https://github.com/epoberezkin/ajv). ajv provides its own type definitions, so you don't need @types/ajv installed!

Однако типизации входит в комплект сам предназначены для использования как это:

import * as Ajv from "ajv"; 
let ajv = new Ajv(...); 

Так машинопись не будет доволен типизации, если не используются import заявления.

Это означает, что если вы хотите использовать CDN, вам нужно будет настроить свой модуль-пакет, чтобы сделать это. Этого не будет достаточно, чтобы включить CDN <script> и иметь Ajv, доступный как глобальный.

Как вы это сделаете, это зависит от вашего поставщика.

 Смежные вопросы

  • Нет связанных вопросов^_^