public Type typeCheck(Scope<Type> scope) {
        return context(String.format("while typechecking the template `%s`", this), this, () -> {
            for (Part part : parts) {
                context("while checking " + part, () -> part.typeCheck(scope).expectStringType());
            }
            return Type.stringType();
        });
    }
Evaluates this template in the provided scope.

@param scope the scope to check this template within.
@return the type of the template.
smithy-rules-engine/src/main/java/software/amazon/smithy/rulesengine/language/syntax/expressions/Template.java