2017-03-27 18 views
3

我正在將js代碼轉換爲打字稿(角度1到2)......痛苦的操作!檢查打字稿中是否存在函數

下面if (_usersDatabase.updateReplication == null) {行導致打字稿錯誤:

Typescript Error 
Property 'updateReplication' does not exist on type 'Database<{}>'. 

。它用來檢查函數是否已經定義。

我該如何爲Typescript寫這個?

import { MigrationService } from '../providers/migration-service'; 
import { CouchConstants } from '../couch-constants'; 
import * as PouchDB from 'pouchdb'; 

@Injectable() 
export class UsersDatabase { 

    constructor(
     private storageService: LocalStorageService 
     , private UtilsService: UtilsService 
     , private MigrationService: MigrationService 

    ) { 

    'use strict'; 

    var _usersDatabase = new PouchDB(CouchConstants.COUCHDB_USERS_DB_NAME); 

    if (_usersDatabase.updateReplication == null) { 

     _usersDatabase.updateReplication = function (newDocsIds) { 
+0

這有什麼錯,你做了什麼? – toskv

+0

我收到一個錯誤(編輯問題) – Louis

回答

4
  • 沒有必要使用this使用'use strict';在打字稿文件
  • 訪問他們的方法和變量。

    @Injectable() 
    export class UsersDatabase { 
    private _usersDatabase : any; 
    
    constructor(
        private storageService: LocalStorageService 
        , private UtilsService: UtilsService 
        , private MigrationService: MigrationService 
    
    ) { 
    
    this._usersDatabase = new PouchDB(CouchConstants.COUCHDB_USERS_DB_NAME); 
    
    if (this._usersDatabase.updateReplication == null) { 
    
         this._usersDatabase.updateReplication = function (newDocsIds) { 
    
         } 
    } 
    } 
    
+0

但'var'對於Typescript也很好。 – micronyks

+0

是'var'很好,我沒有提到任何地方var對打字稿不公平。 –

+0

其實我還是有同樣的錯誤:'Typecript Error 屬性'updateReplication'在'Database <{}>'類型上不存在。如果(this._usersDatabase.updateReplication == null){' – Louis