У меня головные боли, пытаясь перенести автоматически сгенерированную библиотеку java-скриптов в машинописный текст ...
Я упаковал библиотеку java-скриптов и файл d.ts в пакет npm; и установил пакет npm и модули набора текста в среде машинописного текста хоста; импортировал определенные классы в файл ts
У меня есть кое-что очень странное:
"Sender" - это импортированный класс в следующем утверждении:
let sender: Sender = <Sender>cont.content(new Sender());
компилятор машинописного текста сообщил: «TS2304: не удается найти имя« Отправитель »с определением типа и приведением типа; тогда как« новый отправитель () »в порядке.
Для лучшего понимания я разместил нижеприведенные фрагменты кода. Я выписал их для оформления
библиотека js
/**
* @constructor
*/
function Exce() { ...}
Exce.getRootAsExce = function(bb, obj) { ...};
Exce.prototype.text = function(optionalEncoding) {...};
...
/**
* @constructor
*/
function Promp() { ...}
Promp.getRootAsPromp = function(bb, obj) {...};
Promp.prototype.text = function(optionalEncoding) {...};
...
/**
* @constructor
*/
function Sender() {...}
Sender.getRootAsSender = function(bb, obj) {...};
Sender.prototype.count = function() {...};
...
/**
* @constructor
*/
function Bucket() {...}
Bucket.getRootAsBucket = function(bb, obj) {...};
Bucket.prototype.content = function(obj) {...};
...
this.Exce = Exce;
this.Promp = Promp;
this.Sender = Sender;
this.Bucket = Bucket;
...
файл .ts (файл d.ts тот же, получен из .ts командой tsc
...
export interface Buc_S {
new (): Buc_I;
(): Buc_I;
getRootAsBucket (bb:any, obj:any):any;
...
}
export interface Buc_I {
contentType ():Post;
content (obj:any):any;
}
export var Bucket: Buc_S;
export interface Sen_S {
new (): Sen_I;
(): Sen_I;
getRootAsSender (bb:any, obj:any):any;
}
export interface Sen_I {
count(): number;
...
}
export var Sender: Sen_S;
export interface Pro_S {
new (): Pro_I;
(): Pro_I;
getRootAsPromp (bb:any, obj:any):any;
}
export interface Pro_I {
text (optionalEncoding: any): any;
}
export var Promp: Pro_S;
export interface Exc_S {
new (): Exc_I;
(): Exc_I;
getRootAsExce (bb:any, obj:any):any;
}
export interface Exc_I {
text (optionalEncoding: any): any;
}
export var Exce: Exc_S;
хост-файл машинописного текста
import {TransSender} from "./transSender";
import {Bucket, Post,Sender, Promp,Exce} from "fbsj";
export class Decoder{
public static extractSender (bucket: string):boolean{
let abs: Bucket = new Bucket();
let buf = flatbuffers.ByteBuffer(libbase64.decode(bucket));
let cont = Bucket.getRootAsBucket(buf, Bucket);
TransSender._type = cont.contentType();
if(TransSender._type == Post.Sender){
let sender: Sender = <Sender>cont.content(new Sender());
TransSender.setter(sender.count(), sender.pushed(), sender.read(), sender.saved(), sender.rated(), sender.followed(), sender.blocked(), sender.forwarded());
} else if(TransSender._type == Post.Promp){
TransSender._prompt = (<Promp>cont(new Promp())).text();
} else if (TransSender._type == Post.Exce){
TransSender._exception = (<Exce>cont(new Exce())).text();
}
}
}
сообщенные ошибки
Error:(24, 18) TS2304: Cannot find name 'Bucket'.
Error:(29, 25) TS2304: Cannot find name 'Sender'.
Error:(29, 35) TS2304: Cannot find name 'Sender'.
Error:(33, 37) TS2304: Cannot find name 'Promp'.
Error:(36, 40) TS2304: Cannot find name 'Exce'.
«Сообщение» - это перечисление, и оно работало должным образом.
Sender
. У вас есть переменнаяSender
типаSen_S
. Что касается автоматически сгенерированного java-скрипта. Что это значит? Вы написали это на машинописном тексте и сгенерировали javascript? Если да, то почему у вас есть интерфейсы, представляющие классы? - person chrisbajorin   schedule 22.06.2016