推送到webpack入口文件的数组

时间:2016-07-09 17:43:33

标签: typescript

我不确定我做错了什么。 TypeScript抱怨我的webpack输入字段中不存在interface Entry { [name: string]: string | string[]; } interface WebpackConfig { entry: Entry } var config : WebpackConfig = { entry: { server: ['server'], client: ['client'] } } config.entry.server.push('another');

为了简化问题,我将其修剪为:

TSError: ⨯ Unable to compile TypeScript
webpack.config.ts (75,18): Property 'server' does not exist on type 'Entry'

错误:

Entry

根据我的<form class="form-horizontal" method="POST" action="ajouterProduit4" name="formulaire"> <div class="panel panel-default tabs"> <ul class="nav nav-tabs" role="tablist"> <li class="active"><a href="ajouterProduit2"><button name="btn2" style="background: transparent; border: none;">Fiche Technique</button></a></li> </ul> <div class="panel-body tab-content"> <div class="tab-pane active" id="tab-second"> <?php $reqt1 = "SELECT c.Libelle,c.ID FROM caracteristique c,fichetechnique f WHERE c.fichetechniqueID=f.ID AND c.fichetechniqueID='$categorie' LIMIT 0,10"; $reqt2 = "SELECT c.Libelle,c.ID FROM caracteristique c,fichetechnique f WHERE c.fichetechniqueID=f.ID AND c.fichetechniqueID='$categorie' LIMIT 10,10"; $rest1=mysqli_query($conne,$reqt1); $rest2=mysqli_query($conne,$reqt2); ?> <div class="col-md-6" id="txtHint"> <?php while ($rowt1= mysqli_fetch_row($rest1)) { ?> <div class="form-group"> <label class="col-md-3 control-label"><?php echo $rowt1[0] ?></label> <div class="col-md-9"> <div class="input-group"> <span class="input-group-addon"><span class="fa fa-pencil"></span></span> <input name="rowt1[]" value="<?php echo $rowt1[1]; ?>" type="text" class="form-control" /> </div> </div> </div> <?php } ?> </div> <div class="col-md-6"> <?php while ($rowt2= mysqli_fetch_row($rest2)) { ?> <div class="form-group"> <label class="col-md-3 control-label"><?php echo $rowt2[0] ?></label> <div class="col-md-9"> <div class="input-group"> <span class="input-group-addon"><span class="fa fa-pencil"></span></span> <input name="rowt2[]" value="<?php echo $rowt2[1]; ?>" type="text" class="form-control"/> </div> </div> </div> <?php } ?> </div> </div> </div> <div class="panel-footer"> <input type="reset" class="btn btn-default" value="Réinitialiser"> <button name="envoyer" class="btn btn-primary pull-right">Etape 3 <span class="fa fa-arrow-right fa-right"></span></button> </div> </div> </div> </form> 界面,条目可以包含任何属性。

Playground link

1 个答案:

答案 0 :(得分:0)

您的Entry接口被定义为可索引类型,这意味着您使用方括号访问元素而不使用点。

这是你应该怎么做的:

config.entry["server"].push('another')

这也会失败,因为您无法在push类型上使用string | string[],但这样做会:

let item = config.entry["server"];
if (item instanceof Array) {
    item.push('another');
}

如果您希望能够使用点表示法访问项目,那么最好这样做:

interface Entry {
    server: string | string[];
    client: string | string[];
    [name: string]: string | string[];
}

然后你可以:

let item = config.entry.server;
if (item instanceof Array) {
    item.push('another');
}