Подтвердить что ты не робот

Как я могу получить доступ к Native api в NativeScript, когда я использую Typescript

Когда я создаю два новых приложения с tns, одна из них - обычная js-версия, а одна - с typescript. Я получаю странную ошибку в версии typescript, когда я пытаюсь получить доступ к собственной библиотеке.

Когда я создаю загруженную функцию с помощью console.log(pow (x, y)), она отлично работает с версией js, но версия typescript вылетает с этой ошибкой.

error TS2304: Cannot find name 'pow'.

Почему?

TS:

import { EventData } from "data/observable";
import { Page } from "ui/page";
import { HelloWorldModel } from "./main-view-model";

// Event handler for Page "navigatingTo" event attached in main-page.xml
export function navigatingTo(args: EventData) {
    // Get the event sender
    var page = <Page>args.object;
    page.bindingContext = new HelloWorldModel();
}

export function loaded() {
    console.log('Hello World')
    console.log('pow(2.5, 3) = ', pow(2.5, 3));
}

JS:

var createViewModel = require("./main-view-model").createViewModel;

function onNavigatingTo(args) {
    var page = args.object;
    page.bindingContext = createViewModel();
}

function loaded() {
    console.log('hello world')
    console.log('pow(2.5, 3) = ', pow(2.5, 3));
}

exports.onNavigatingTo = onNavigatingTo;
exports.loaded = loaded;
4b9b3361

Ответ 1

Последняя версия NativeScript по умолчанию создает приложение без файлов декларации платформы ( android17.d.ts для Android и ios.d.ts для iOS) и без этих файлов ваш TypeScript просто не знает о ссылках на родные API. Причина - эти файлы довольно большие и нужны только тогда, когда разработчики будут использовать собственный API TS +.

Решение:

1.) установите файлы определения

npm i tns-platform-declarations --save-dev

Это установит файлы декларации вашей платформы в node_modules/tns-platform-declarations

2.) откройте reference.d.ts в главном каталоге приложения и добавьте следующее

// SEE the updated paths below

Теперь вам хорошо идти!

UPDATE (начиная с Octomber 2017 - с установкой tns-core-modules 3.x.x и tns-platform-declarations 3.x.x): Плагин npm теперь имеет разную структуру, поэтому это правильные пути (создайте references.d.ts файл в корневом каталоге и поместите его ниже)

/// <reference path="./node_modules/tns-platform-declarations/ios/ios.d.ts" />
/// <reference path="./node_modules/tns-platform-declarations/android/android.d.ts" />

Важно. Ваш tsconfig.json должен выглядеть следующим образом:

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es5",
        "experimentalDecorators": true,
        "lib": [
            "es6",
            "dom"
        ]
    }
}